Visual Studio Icon Visual Studio 2017 Preview Release Notes


| Developer Community | System Requirements | Compatibility | Distributable Code | License Terms | Blogs | Known Issues |


Important

This release is not "go-live" and not intended for use on production computers or for creating production code.

Click a button to download the newest preview version of Visual Studio 2017. For instructions on installing and updating Visual Studio 2017, see the Update Visual Studio 2017 to the most recent release documentation.


What's New in 15.8

The Visual Studio Blog is the official source of product insight from the Visual Studio Engineering Team. You can find in-depth information about the Visual Studio 15.8 releases in the following posts:

Visual Studio 2017 version 15.8 Preview Releases

Visual Studio 2017 version 15.8 Announcements


Known Issues

See all existing known issues and available workarounds in Visual Studio 2017 version 15.8.

Visual Studio 2017 Known Issues

The PowerShell tools component has been removed from Visual Studio setup. If you upgrade to Visual Studio update 8 preview 3 or later, the installed PowerShell tools is removed. If you want to continue using this component, install from Visual Studio gallery at PowerShell Tools for Visual Studio 2017.


Release Notes Icon Visual Studio 2017 version 15.8 Preview 1

released May 07, 2018

Summary of What's New in 15.8 Preview 1

New Features in 15.8 Preview 1

Issues Fixed in 15.8 Preview 1

These are the customer-reported issues addressed in this release. If you are looking for a specific customer-reported issue that has been fixed in 15.8 Preview 1, visit the Developer Community.


Details of What's New in 15.8 Preview 1

C++

C++ Quick Info tooltips on macros now show what they expand to, rather than just their definition. This is particularly useful for complex macros that reference other macros as it clarifies what the macro identifier is replaced with by the preprocessor.

Visual Studio Web Tools

Library Manager is a new feature included in Visual Studio 2017. It helps you manage client-side libraries in your web projects.

Container Tools

In Visual Studio 15.8 Preview 1, we have added a new single project Docker container experience for ASP.NET Core web projects. This supplements the existing Docker Compose-based container tooling and provides a simpler, easier way to create, debug, and build Docker containers right from Visual Studio.

You can add Docker support when creating the project (Figure 1):

Enable Docker Support
(Figure 1) Enable Docker Support

Or, you can enable Docker support to an existing project through the project's context menu in Solution Explorer (Figure 2). Once you do this, Visual Studio creates a single Dockerfile in the project. You have the option to choose either Windows or Linux.

Add Docker Support
(Figure 2) Add Docker Support

Visual Studio also adds a debugger launch profile (Figure 3) for Docker so that the project can be debugged while running within a container.

Docker Launch Profile
(Figure 3) Docker Launch Profile

If you have a solution with multiple Docker projects, by default, only one container runs when you choose to start the solution. If you wish to run multiple containers simultaneously, you can right-click on the solution in Solution Explorer and select Set Startup Projects, then Multiple startup projects, and then set the Action drop-down to Start or Start without debugging for all projects that you want to run.

Once you have your containerized project running the way you want, you can right-click on the project and select Build Docker Image to build an image locally, when ready to push to Azure Container Registry or DockerHub.

You can also add the existing Docker Compose-based functionality to an ASP.NET Core web project through the new Container Orchestrator Support option (Figure 4). Right-click on the ASP.NET Core web project in Solution Explorer, select Add > Container Orchestrator Support, and then select Docker Compose from the drop-down menu.

Add Container Orchestrator Support
(Figure 4) Add Orchestration Support

Release Notes Icon Visual Studio 2017 version 15.8 Preview 1.1

released May 08, 2018

Issues Fixed in 15.8 Preview 1.1

  • This release provides a fix that reduces memory usage and GC pressure during solution load.

Release Notes Icon Visual Studio 2017 version 15.8 Preview 1 Security Advisory Notice

updated May 08, 2018

Microsoft Security Advisory for .NET Core Denial Of Service Vulnerability

CVE-2018-0765

Microsoft is releasing this security advisory to provide information about a vulnerability in .NET Core and .NET native version 2.0. This advisory also provides guidance on what developers can do to update their applications to remove this vulnerability.

Microsoft is aware of a denial of service vulnerability that exists when .NET Framework and .NET Core improperly process XML documents. An attacker who successfully exploited this vulnerability could cause a denial of service against a .NET Framework, .NET Core, or .NET native application.

The update addresses the vulnerability by correcting how .NET Framework, .NET Core, and .NET native applications handle XML document processing.

If your application is an ASP.NET Core application, developers are also advised to update to ASP.NET Core 2.0.8.


Release Notes Icon Visual Studio 2017 version 15.8 Preview 2

released May 31, 2018

Summary of What's New in 15.8 Preview 2

New Features in 15.8 Preview 2

Issues Fixed in 15.8 Preview 2

These are the customer-reported issues addressed in this release. If you are looking for a specific customer-reported issue that has been fixed in 15.8 Preview 2, visit the Developer Community.


Details of What's New in 15.8 Preview 2

Install

You now have the option to download all installation files before starting your installation.

  • To use this new option, select the "Download all, then install" option in the installer (Figure 1). We suggest this option if you have a slower internet connection.
  • The default option remains "Install while downloading", which downloads and installs in parallel.
Download, then install option
(Figure 1) Download, then install option

Performance

We've added an option to disable reopening documents that were open in the previous session, as reopening certain types of files or designers can delay solution load.

  • Toggle this option in Tools > Options > Projects > Solutions > General.

Debugging

When you have more than one instance of Visual Studio 2017 installed, you can now select which instance to deploy your extension to when debugging (Figure 2). That way you can develop in the e.g. the Visual Studio release channel while debugging in the preview channel.

Select your debug instance
(Figure 2) Select debug instance

Extensibility

You can now build Visual Studio extension (VSIX) projects using the Build Tools for Visual Studio 2017.

Performance Profiling (CPU Usage)

This release contains the following improvements to the CPU Usage tool of the Performance Profiler (available through ALT-F2):

  • The Call Tree view now displays asynchronous execution by logical call stack by default. You can turn off this behavior by unchecking the option "Stitch Async Code" in the Filter dropdown of the CPU Usage main view.
  • Added a Modules/Functions view which displays performance information by module (dll) and by function within a module. One can display the Modules/Functions view from the context menu available when selecting a function in the CPU Usage main view, or from the View dropdown in the Call Tree or Caller/Callee views.
  • Added 'instance indication' to the CPU Usage graph in the CPU Usage tool's main view. You can view the instances when a function is executing (for instance, on the stack) by double clicking a function listed in any of the CPU Usage views.

C++

This release has the following updates and enhancements to C++:

  • Added Add > New Item template for generating a .clang-format file following the coding convention specified for ClangFormat in Tools > Options. If the Visual Studio convention is selected, the generated file tries to match the user's current Visual Studio formatting configuration from Tools > Options.
  • Updated the shipped clang-format.exe version to 6.0.0.
  • Templates to simplify adding configurations to CppProperties.json.

Visual Studio Tools for Xamarin

This release contains the following updates for Xamarin:

Hyper-V Android emulator support

This release contains a preview of the Google Android emulator that is compatible with Hyper-V which is available in the Windows 10 April 2018 Update (Figure 3). This enables you to use Google's Android emulator side-by-side with other Hyper-V based technologies, including Hyper-V virtual machines, Docker tooling, the HoloLens emulator, and more. Mobile app developers who use Hyper-V now have access to a fast Android emulator that always supports the latest Android APIs, works with Google Play Services out of the box, and supports all features of the Android emulator, including camera, geolocation, and Quick Boot.

Screenshot of both the Google Android emulator and HoloLens emulator running at the same time.
(Figure 3) Google Android Emulator and HoloLens emulator
Minimum support for Xamarin.Mac binding projects

We have added minimum support for Xamarin.Mac binding projects in Visual Studio 2017. This enables Visual Studio to load and recognize Xamarin.Mac binding projects as supported. You can also build Xamarin.Mac binding projects, however the build process is performed locally without using the native Mac tool chain so the generated IL assemblies cannot be used for running or debugging in apps.

F# and F# Tools

We focused on performance for F# tools when using .NET SDK-style projects and F# compiler fixes.

F# language
  • You can once again inherit from FSharpFunc. This was previously disabled in F# 4.1.
  • We fixed a bug where you could get an AccessViolationException with seq { } when using yield! with multiple collected sequences in release mode.
  • We fixed a bug in MailboxProcessor.TryReceive() where it could cause a spike in CPU usage on first invocation.
  • Enum pattern match warnings now print out a field name of an uncovered code, by John Wostenberg.
F# tools
  • We significantly improved the time to semantic colorization in newly-opened F# files in .NET SDK projects that are not using multi-targeting.
  • We significant improved IntelliSense performance for F# in .NET SDK projects that are not using multi-targeting.
  • Completion data in IntelliSense is now saved for up to two minutes, allowing descriptions in the tooltip to remain for up until that point per invocation.

Release Notes Icon Visual Studio 2017 version 15.8 Preview 3 New Release icon

released June 26, 2018

Summary of What's New in 15.8 Preview 3

New Features in 15.8 Preview 3

  • Visual Studio now offers .NET Framework 4.7.2 development tools to supported platforms with 4.7.2 runtime included.
  • We improved performance during project unload/reload and branch switching.
  • With added support for Azure Functions, you now have a new target host in the Configure Continuous Delivery to Azure dialog.
  • Git and TFS status now updates properly for external file changes in .NET Core projects.
  • We added new productivity features, such as code cleanup, invert-if refactoring, Go to Enclosing Block, Multi-Caret support, and new keyboard profiles.
  • C++ enhancements include Template IntelliSense, convert macro to constexpr lightbulbs, and experimental in-editor code analysis squiggles.
  • You can now use cross-language debugging with Python 3.7.0rc1.
  • Performance Profiling now offers the ability to pause/resume data collection and adds a new .NET Object Allocation Tracking tool.
  • We included improvements for Android incremental builds in the Xamarin support for Xcode 9.4.
  • The Build Tools now support Workflow.
  • Async autoload packages are delayed till startup and solution load complete

Issues Fixed in 15.8 Preview 3

These are the customer-reported issues addressed in this release. If you are looking for a specific customer-reported issue that has been fixed in 15.8 Preview 3, visit the Developer Community.


Visual Studio 2017 version 15.8 Preview 3 Security Advisory Notice

Microsoft Security Advisory for Git Security Vulnerability

CVE-2018-11235

We fixed a security vulnerability in Git that was disclosed by the Git community. The vulnerability can lead to arbitrary code execution when a user clones a malicious repository. This blog post has more information.


Details of What's New in 15.8 Preview 3

.NET Framework 4.7.2

Visual Studio 2017 version 15.8 now offers the .NET Framework 4.7.2 development tools to all supported platforms with the 4.7.2 runtime included. The .NET Framework 4.7.2 offers several new features and improvements as well as numerous reliability, stability, security, and performance fixes.

You can find more details about the .NET Framework 4.7.2 in these articles:

Performance

This release contains the following performance improvements:

  • Branch switching for C#, VB, and C++ projects is much faster for large solutions since solution reload is no longer required.
  • We have reduced the time to unload and reload a small set of C# and VB projects in large solutions from minutes to several seconds.

Performance Profiling

This release contains the following performance profiling enhancements:

  • We added the capability to start profiling paused:

    • The CPU Usage tool in the Performance Profiler (ALT-F2) can now start paused. This can be useful when it takes a while to get to a scenario worthy of a CPU Usage investigation. By starting the CPU usage collection disabled, the Performance Profiler will not collect any CPU usage sample stack data until it is specifically enabled. This makes the resultant amount of data much smaller to collect and analyze, thus making your performance investigations more efficient.
    • To start a session with CPU Usage sample collection disabled, click the settings (gear) icon next to the CPU Usage tool in the Performance Profiler launch page (Figure 1) to display the CPU Usage property page, then uncheck the checkbox labeled Enable CPU Profiling (Sampling). Finally, press OK to save the settings.
      CPU Usage Tool settings page
      (Figure 1) CPU Usage Tool Settings
    • Once you start the target application (by pressing the Start button in the Performance Profiler launch page), you'll see a monitoring display showing the CPU utilization graph (Figure 2) that allows you to control the CPU profiling. To enable CPU usage sample stack data collection, press the Enable CPU profiling link in the middle of the view, or click the Record CPU Profile button just below the CPU utilization graph. You can click the Record CPU Profile button to enable/disable sample data collection as many times as you like. The CPU utilization graph color changes to indicate whether sample collection is enabled/disabled at that point in time.
    CPU Usage Tool monitoring view
    (Figure 2) CPU Usage Tool Monitoring View
  • We added a .NET Object Allocation Tracking tool:

    • The .NET Object Allocation Tracking Tool joins the family of tools available from the Performance Profiler. Invoking this tool for a performance profiler session causes the collection of a stack trace for every .NET object allocation that occurs in the target application. This stack data is analyzed along with object type and size information to reveal details of the memory activity of your application. You can quickly determine the allocation patterns in your code and identify anomalies as well. In addition, for Garbage Collection (GC) events, one can easily determine which objects were collected and retained, quickly determining object types which dominate the memory usage of the application.
    • This is especially useful for API writers to help minimize allocations. A lot of applications will overrun the buffer limits involved in the diagnostics data collection, but small test applications exercising an API's key scenarios can be diagnosed quite well. While your test application is executing, the Performance Profiler displays a monitoring view with a line graph of Live Objects (count), as well as an Object Delta (% change) bar graph.
    • To use the .NET Object Allocation Tracking Tool, display the Performance Profiler launch page (Figure 3), select a target to profile (the default target is the startup project in the solution), check .NET Object Allocation Tracking from the list of available tools, then press the Start button.
    Performance Profiler launch page
    (Figure 3) Performance Profiler Launch Page

C++

This release has the following updates and enhancements to C++:

  • We added a new quick-fix lightbulb to convert basic macros to constexpr as a new tool to modernize code.
  • You have a new, experimental, token-based preprocessor that conforms to C++11 standards (including C99 preprocessor features), enabled with /experimental:preprocessor switch. This is controlled with macro _MSVC_TRADITIONAL, which is defined 1 when using the traditional preprocessor and 0 when using the new experimental standards conformant preprocessor.
  • IntelliSense for templates provide you more details about template arguments to take full advantage of IntelliSense within your template body.
  • We added templates to simplify adding configurations to CMakeSettings.json.
  • We're working to refresh our code analysis experience. You can now enable the new, in-progress features under Tools > Options > Text Editor > C++ > Experimental > Code Analysis. Code analysis can run in the background when files are opened or saved and results are displayed in the error list and as green squiggles in the editor.
  • Just My Code now enables you to step-over code from system or 3rd party C++ libraries in addition to collapsing those calls in the call-stack window. You can control this behavior for any C++ libraries when your code is compiled with /JMC and the non-user libraries paths are specified in a .natjmc file. If the system library calls into user-code, when you step in, the debugger skips all system code and stops on the first line of user-code callback.
  • The Visual Studio Developer Command Prompt supports enabling the Visual C++ Spectre variant 1 mitigated runtimes (-vcvars_spectre_libs = spectre). More information about Spectre mitigations is available on the Visual C++ Team Blog.

Python

You can now use mixed-mode (cross-language) debugging with Python 3.7.0rc1.

Visual Studio Tools for Xamarin

This release contains the following updates for Xamarin:

  • We added support for Xcode 9.4.
  • When you create a new Xamarin.Forms project, the default code sharing option is now .NET Standard. The shared project option is still available.
  • We added Android incremental build improvements. Xamarin.Android uses files generated in the intermediate output directory to achieve incremental builds that are faster than full builds. Previously, if you changed your project's target framework it would invalidate the files and result in a full build on the next run. In this release we now preserve the files in per-framework folders so you can switch between different target frameworks and still benefit from incremental builds. Cleaning the project allows you to reclaim the disk space used by the preserved files.
  • We also added templates for Xamarin.Essentials. Xamarin.Essentials is a core set of cross-platform APIs to help developers build native apps. This gives developers access to over thirty platform-specific APIs that can be accessed from their shared code. We include geolocation, secure storage, sensors, device information, and much more. Xamarin.Essentials can be used in any iOS, Android, UWP, or Xamarin.Forms app, regardless of how you create the user interface.

Productivity

This release contains the following productivity enhancements:

  • You can perform additional code cleanup with Format Document (Ctrl + K, D or Ctrl + E, D) for C# development. Configure cleanup by going to Tools > Options > Text Editor > C# > Code Style > Formatting > General.
  • We added more refactorings and quick actions using Ctrl + . or Alt + Enter:
    • Invert If enables you to invert your logic in if-else statements. Place your cursor in the if keyword to trigger this refactoring.
    • Add parameter from method callsite allows you to add a parameter to a method by adding an argument to a method callsite and triggering Quick Actions and Refactorings.
    • Remove unnecessary parentheses removes parentheses around binary operators that are not essential for compilation. You can configure this style rule through Tools > Options > Text Editor > C# > Code Style > General or .editorconfig:
      • dotnet_style_parentheses_in_arithmetic_binary_operators
      • dotnet_style_parentheses_in_relational_binary_operators
      • dotnet_style_parentheses_in_other_binary_operators
      • dotnet_style_parentheses_in_other_operators
    • Use ternary conditionals in assignments and return statements can also be configured as a style rule in Tools > Options > ... or through .editorconfig:
      • dotnet_style_prefer_conditional_expression_over_assignment
      • dotnet_style_prefer_conditional_expression_over_return
  • We added new commands and improvements to the Go To All window:
    • Go to Enclosing Block (Ctrl + Alt + UpArrow) allows you to quickly navigate up to the beginning of the enclosing code block.
    • Go to Next/Previous Issue (Alt + PgUp/PgDn) allows you to skip to the next/previous issue (error, squiggle, lightbulb).
    • Go to Member (Ctrl + T, M) is now scoped to the file by default. You can change the default back to solution by toggling the Scope to Current Document (Ctrl + Alt + C).
  • You can now create insertion points and selections at multiple, arbitrary locations in a file with multiple caret support. This allows you to add, edit, or delete text in multiple places simultaneously.
    • Insert carets with Ctrl + Alt + LeftMouseClick.
    • Add a selection and caret at next location that matches current selection with Shift + Alt + Ins.
    • See Edit > Multiple Carets for full list of actions.
  • Access a contextual navigation menu with Alt + `.
  • Keep your keybindings consistent with two new keyboard profiles: Visual Studio Code and ReSharper (Visual Studio). You can find these schemes under Tools > Options > General > Keyboard and using the top drop-down menu.

Connected Services

You can now configure continuous delivery for Azure functions directly from Visual Studio 2017 for solutions with Azure Function Projects.

Delay loading of packages that autoload asynchronously

Visual Studio now delays the loading of asynchronous packages that are configured to autoload until after the Visual Studio IDE has fully started and the solution has loaded. This change does not affect synchronously autoloaded packages. Users can look at the Task Status Center in the lower left corner of the status bar to monitor progress. Extension authors that create asyncpackages should test their extension. For more information, see Improving the responsiveness of critical scenarios by updating auto load behavior for extensions.


Release Notes Icon Visual Studio 2017 version 15.8 Preview 4 New Release icon

released July 10, 2018

Summary of What's New in 15.8 Preview 4

This release contains the following improvements and enhancements:

Issues Fixed in 15.8 Preview 4

These are the customer-reported issues addressed in this release. If you are looking for a specific customer-reported issue that has been fixed in 15.8 Preview 4, visit the Developer Community.


Visual Studio 2017 version 15.8 Preview 4 Security Advisory Notices

updated July 10, 2018

Visual Studio Remote Code Execution Vulnerability

CVE-2018-8172

A remote code execution vulnerability that can lead to exploitation of a user's machine by opening a specially crafted project, or resource file. The security update addresses the vulnerability by correcting how Visual Studio checks the source markup of a file. For more information, see Microsoft Security Response Center article (CVE-2018-8172).

.NET Framework Remote Code Execution Vulnerability

CVE-2018-8260

A remote code execution vulnerability exists in .NET software which can lead to exploitation of a user's machine by allowing attackers to run arbitrary code in the context of the current user. The security update addresses the vulnerability by correcting how .NET checks the source markup of a file. For more information, see Microsoft Security Response Center article (CVE-2018-8260).

.NET Microsoft Macro Assembler Tampering Vulnerability

CVE-2018-8232

Tampering vulnerability related to the Microsoft Macro Assembler improperly validating code. The security update addresses the vulnerability by ensuring that Microsoft Macro Assembler properly validates code logic. For more information, see Microsoft Security Response Center article (CVE-2018-8232).

ASP.NET Core Security Feature Bypass Vulnerability

CVE-2018-8171

An ASP.NET Core Security Feature Bypass Vulnerability exists when the number of incorrect login attempts is not validated that can lead to an attacker trying infinite authentication attempts. The update addresses the vulnerability by validating the number of incorrect login attempts. For more information, see Microsoft Security Response Center (CVE-2018-8171).

Details of What's New in 15.8 Preview 4

C++

This release has the following updates and enhancements to C++:

  • Two new additions to the SSA Optimizer focused on modern C++ code generation: redundant store elimination and folding of redundant branches.
  • Optimized memory mapped I/O performance in the linker to reduce link times.
  • C++ IntelliSense now responds to changes in the remote environment for both CMake and MSBuild projects targeting Linux. As you install new libraries or change your CMake projects, C++ IntelliSense will automatically parse the new headers files on the remote machine for a complete and seamless C++ editing experience.

Test Performance

We have significantly improved performance when running a few tests in a large solution with multiple test projects. In our labs, a solution with over 10,000 MSTests executed a single test up to 82% faster!

.NET Test Adapter Extension: breaking change and deprecation

  • Breaking Change: All test projects must include their .NET test adapter nuget reference in their csproj. If they don’t, this test output will appear on the project if discovery by a test adapter extension is kicked off after a build or if the user tries to run the selected tests:
    • Test project {} does not reference any .NET NuGet adapter. Test discovery or execution might not work for this project. It’s recommended to reference NuGet test adapters in each test project in the solution.
  • .NET test frameworks have been releasing their adapters in nuget packages and moving away from Visual Studio extensions. In Visual Studio 2017 Update 15.8 Preview 4, support for .NET test adapters delivered via extension is deprecated, but still supported. This means two new options will be available in Tools > Options > Test.
    • The first option allows Visual Studio to only use the test adapters it finds in the test assembly folder (populated by the test adapter nuget reference) or as specified in the runsettings file.
    • The second option allows Visual Studio to “fallback” to the old behavior and search for test adapter extensions for projects that do not have a test adapter nuget reference. Both options will be checked by default so no default behavior will change in this release.
  • Note, non-.NET test adapters are not affected with this change.

Publish Improvements

This release contains the following publish improvements:

  • When publishing a Docker container to a container registry, you can now customize the tag for the image. You can either manually add a tag (default is "latest") or use an auto-generated tag to make sure each tag is unique.
  • When creating a new Azure App Service, you can also configure Application Insights to automatically collect telemetry. If you choose a region that also has Application Insights, it defaults to enabled. If you choose a region that does not yet contain Application Insights, you can manually specify a different region for your Application Insights resource from the dropdown.
  • When publishing Azure Functions projects you can choose to publish using the new Run-From-Zip feature.

Visual Basic Performance Improvement

Visual Basic now provides a significant performance improvement when using the pattern CInt(Fix(number)) to convert from non-integer types to integers.

Visual Studio Tools for Xamarin

The Xamarin.Forms Previewer now has toolbox support when using Xamarin.Forms version 3.1.0.583944 or higher. Xamarin.Forms controls will appear in the toolbox so they are more discoverable for those new to the toolkit. You can also drag and drop a control onto the XAML code editor to add the control to the page.


Feedback

We would love to hear from you! For issues, let us know through the Report a Problem option in the upper right-hand corner of either the installer or the Visual Studio IDE itself. The Feedback Icon icon is located in the upper right-hand corner. You can track your issues in the Visual Studio Developer Community, where you can ask questions and find answers. You can also make a product suggestion through UserVoice or get free installation help through our Live Chat support.

Blogs

Take advantage of the insights and recommendations available in the Developer Tools Blogs site to keep you up-to-date on all new releases and include deep dive posts on a broad range of features.

Developer Tools Blogs


Visual Studio 2017 Release Notes History

Please see the Visual Studio 2017 Release Notes History page.


Top of Page