Visual Studio Icon Visual Studio 2019 Preview Release Notes



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


Important

This release is not "go-live" and not intended for use on production computers or for creating production code. For instructions on installing and updating Visual Studio 2019, see this documentation on updating Visual Studio 2019 to the most recent release.

Download Community Button Download Professional Button Download Preview Button


What's New in Visual Studio 2019

Visual Studio 2019 Preview Releases

Visual Studio 2019 Blog

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


Release Notes Icon Visual Studio 2019 version 16.8 Preview 5 New release icon

released October 20, 2020

In This Release of Visual Studio 2019 version 16.8 Preview 5



Visual Studio 2019 version 16.8 Preview 4

released October 13, 2020

In This Release of Visual Studio 2019 version 16.8 Preview 4


  • Fixed an issue where compiling in Visual Studio 2019 16.7 with the Intel C++ Compiler's 80-bit long double emits compiler errors, preventing projects from building.
  • Fixed an issue where Live Unit Testing would refuse to start in some scenarios.
  • .NET 5.0.RC2 added to Visual Studio 2019 v16.8 Preview 4
  • Fixed a bug where an occasional Git operation would begin and never finish.

Experimental Razor editor updates

The new experimental Razor editor now supports the following Razor editing features:

  • Blazor light bulbs:
    • Extract to code behind*:
    • Create component from tag*
    • Add @using directive for component
    • Fully qualify component tag name
  • C# light bulbs
    • Add @using directive
    • Fully qualify type name
  • Enhanced Razor formatting. We now format more mixed HTML & C# content. In cases where we don't know how to format the document we no-op.
  • Only works in local Razor scenarios, not supported yet in Codespaces or Live Share.

To enable the experimental Razor editor, go to Tools > Options > Environment > Preview Features, select Enable experimental Razor editor, and then restart Visual Studio.

From Developer Community


Release Notes Icon Visual Studio 2019 version 16.8 Preview 3.2

released September 29, 2020

In This Release of Visual Studio 2019 version 16.8 Preview 3.2



Release Notes Icon Visual Studio 2019 version 16.8 Preview 3.1

released September 22, 2020

In This Release of Visual Studio 2019 version 16.8 Preview 3.1



Release Notes Icon Visual Studio 2019 version 16.8 Preview 3

released September 14, 2020

In This Release of Visual Studio 2019 version 16.8 Preview 3


Visual Studio IDE

  • Add your GitHub account using the familiar Visual Studio account management experience. The version control, integrated terminal and other features will then be able to leverage your account credentials to satisfy their GitHub authentication needs.
Inline parameter name hints with GitHub
Adding GitHub accounts in Visual Studio

Git Productivity

  • Create a new branch from an Azure DevOps work item
Create a new branch from an Azure DevOps work item
Create a new branch from a work item
  • Open a Git repository from a list of your local repositories in the Git menu
Local Repositories list
List of local repositories in Git menu
  • The default source control provider is now Git instead of TFVC, which you can change from Tools - Options - Source Control

C++

  • C++20 Coroutines are now supported under /std:c++latest and the header. Support for our legacy behaviour is available under <experimental/coroutine> and the /await switch.
  • IntelliSense now provides support for C++20 and headers, and rename and browsing for concept definitions. There is a known issue that we expect to address in Preview 4.
  • Our STL now has support for the majority of C++20 Ranges. You can track our progress on our ranges GitHub issue.
  • Conditionally trivial special member functions are now supported in MSVC.
  • C11 and C17 are now supported under the /std:c11 and /std:c17 switches.
  • Additional STL improvements include full support for std::atomic_ref, std::midpoint and std::lerp and std::execution::unseq, optimizations for std::reverse_copy, and more. You can find all the updates in our Changelog.
  • We have upgraded the version of CMake shipped with Visual Studio to CMake 3.18.
  • Our code analysis tools now support the SARIF 2.1 standard: the industry standard static analysis log format. You can read more about the format SARIF format in the official specification.
  • Missing build tools in Linux projects will now issue a warning in the toolbar and a clear description of the missing tools in the error list.
  • You can now debug Linux core dumps on a remote Linux system or WSL directly from Visual Studio.
  • For C++ Doxygen comment generation, we added additional comment style options (/*! and //!).
  • Additional vcpkg announcements
  • As-you-type linter and fixups are now available in Visual Studio. Configure using Tools->Options->Text Editor->C/C++->CodeStyle->Linter + Fixups.
As-you-type linter showing warning for using bitwise & instead of logical && on bools
As-you-type linter

.NET Productivity

  • .NET compiler platform (Roslyn) analyzers inspect your C# or Visual Basic code for security, performance, design, and other issues. Starting in .NET 5.0, these analyzers are included with the .NET SDK. Code analysis is enabled, by default, for projects that target .NET 5.0 or later. You can enable code analysis on projects that target earlier .NET versions by setting the EnableNETAnalyzers property to true. You can disable code analysis for your project by setting EnableNETAnalyzers to false. You can also use the Project Properties window to enable/disable .NET analyzers. To access the Project Properties window right-click on a project within Solution Explorer and select Properties. Next, select the Code Analysis tab where you can either select or clear the checkbox to Enable .NET analyzers.
Project Properties window to enable .NET Analyzers
Project Properties window to enable .NET Analyzers
  • There is now a refactoring that introduces the new C# 9 not pattern matching syntax when a suppression operator is present. Place your cursor on the suppression operator. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Use pattern matching.
Refactoring introducing C# 9 not pattern matching syntax
Refactoring introducing C# 9 not pattern matching syntax
  • There is now an inline method refactoring that helps you replace usages of a static, instance, and extension method within a single statement body with an option to remove the original method declaration. Place your cursor on the usage of the method. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Next select from one of the following options:

Select Inline <QualifiedMethodName> to remove the inline method declaration:

Inline Method refactoring removing declaration
Inline Method refactoring removing declaration

Select Inline and keep <QualifiedMethodName> to preserve the original method declaration:

Inline Method refactoring preserving declaration
Inline Method refactoring preserving declaration
  • Creating a new C# or Visual Basic file from a template respects EditorConfig code style settings. The following code styles will automatically get applied when creating new files: file headers, sort using directives, and place using directives inside/outside namespaces.

Debugger

.NET Core Linux core dump debugging support

Debugging managed Linux core dumps on Windows has been difficult realize until now, it would usually mean setting up another Linux environment that exactly mirrored production and then installing a set of tools for the analysis. Thankfully with Visual Studio 2019 16.8 preview 3 you can simply drag and drop a managed Linux core dump directly into your IDE and immediately start debugging.

.NET and .NET Core Auto Analysis

Asynchronous (async) programming has been around for several years on the .NET platform but has historically been difficult to do well. We have introduced and managed memory dump analyzer that helps identify the follwoing ant-patterns:

  • Sync-over-Async
  • Async Void

.NET and .NET Core memory hot path auto analysis

This allows customers to intuitively view the dominating object types in their memory heap by using flame annotations in the Diagnositcs Memory Tool window.

XAML Tools (WPF, UWP & Xamarin.Forms)

XAML Hot Reload Settings moved to "Debugging > Hot Reload": In this release we have completed the XAML Hot Reload settings migration for Xamarin.Forms to the new location under “Debugging > Hot Reload”. This means customers who previously found the Xamarin.Forms XAML Hot Reload settings under “Xamarin > Hot Reload” will now find them in the new dialog as shown below. All settings have been migrated so all of your existing selections should still match what they were in the previous location.

XAML Hot Reload Consolidated Settings
XAML Hot Reload Consolidated Settings

Toolbox population from unreferenced NuGet packages: In this release we have added support for TargetFrameworkMoniker-specific VisualStudioToolsManifest.xml files when populating Toolbox with controls from unreferenced NuGet packages. So, for example, your package could expose different sets of controls to .NET Core 3.1 and .NET 5.0 projects.

Improving MVVM Support: When authoring a XAML document, you can set d:DataContext to get accurate binding IntelliSense for the XAML document. In the past, manually specifying the data-context type was cumbersome; you had to leave the XAML document, find the desired view-model type, copy and paste its namespace and name into the d:DataContext declaration. In this release we’re introducing a new feature that allows you to quickly declare a d:DataContext via a lightbulb that suggests possible view-model candidates.

Selecting a design time data-context
Selecting a design time data-context

Experimental Razor editor updates

The new experimental Razor editor now supports the following Razor editing features:

  • Rename Razor components in markup from .razor files.

To enable the experimental Razor editor, go to Tools > Options > Environment > Preview Features, select Enable experimental Razor editor, and then restart Visual Studio.

Fakes with SDK style projects generate shim issue

When using the new Fakes support for SDK style projects some users encountered the following error when generating shims.

Cannot generate shim for System.DateTime: type is not supported because of internal limitations

A fix for this is released in 16.8 Preview 3. If you are using a 16.7.* release you can use the following workaround:

  1. Add <FakesUseV2Generation>False</FakesUseV2Generation> to a PropertyGroup in your csproj file.
  2. Add the <Fakes Include="Fakes\*.fakes" /> to an ItemGroup in your csproj file.
  3. Add a reference to the generated Fakes assemblies in the ProjectDir/FakesAssemblies.

You can also follow the developer community feedback for additional updates.

From Developer Community


Release Notes Icon Visual Studio 2019 version 16.8 Preview 2.1

released August 31, 2020

In This Release of Visual Studio 2019 version 16.8 Preview 2.1


  • Fixed a bug causing Visual Studio 2019 to crash or stop responding when closing or navigating away from ASP.NET Core solutions.

Release Notes Icon Visual Studio 2019 version 16.8 Preview 2

released August 25, 2020

In This Release of Visual Studio 2019 version 16.8 Preview 2


Git Productivity

  • Single click to switch between branch histories in the Git Repository window
  • Access the new Git windows in read-only mode as a guest in a Live Share session
  • View and select from a list of solutions in your repo in Solution Explorer after opening a repository
Preview Feature toggle to show list of Views when opening a repo
Preview Feature toggle to show list of Views when opening a repo
List of Views in Solution Explorer
List of Views in Solution Explorer

Experimental Razor editor updates

The new experimental Razor editor now supports the following Razor editing features:

  • Go-to-definition on Blazor component tag names
  • C# formatting when typing in pure C# blocks
  • C# hover colorization
  • C# completion toolitip colorization

To enable the experimental Razor editor, go to Tools > Options > Environment > Preview Features, select Enable experimental Razor editor, and then restart Visual Studio.

.NET Productivity

  • There is now C# and Visual Basic support for inline parameter name hints that inserts adornments for literals, casted literals, and object instantiations prior to each argument in function calls. You will first need to turn this option on in Tools > Options > Text Editor > C# or Basic > Advanced and select Display inline parameter name hints (experimental). The inline parameter name hints will then appear in C# or Visual Basic file.
Inline parameter name hints
Inline Parameter Name Hints
  • You can now extract members from a selected class to a new base class with the new Extract Base Class refactoring. Place your cursor on either the class name or a highlighted member. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Pull member(s) up to new base class. The new Extract Base Class dialog will open where you can specify the name for the base class and location of where it should be placed. You can select the members that you want to transfer to the new base class and choose to make the members abstract by selecting the checkbox in the Make Abstract column.
Extract Base Class
Extract Base Class

Once you select Ok you will see the new base class added along with its members.

For C#, select Convert typeof to nameof:

Convert typeof to nameof
Convert typeof to nameof

For Visual Basic, select Convert GetType to NameOf:

Convert GetType to NameOf
Convert GetType to NameOf
  • Code cleanup has new configuration options that can apply formatting and file header preferences set in your EditorConfig file across a single file or an entire solution.
Formatting and File Header support in Code Cleanup
Formatting and File Header support in Code Cleanup

XAML Tools (WPF, UWP & Xamarin.Forms)

  • XAML Hot Reload Settings moved to “Debugging > Hot Reload” – as part of a bigger effort that will be completed across multiple 16.8 Preview release, we’re starting to consolidate the XAML Hot Reload settings across WPF, UWP and eventually Xamarin.Forms into a unified settings location. In this release we’ve started this process by moving the existing desktop settings out of the “Debugging > General > Enable UI Debugging Tools for XAML” and into a new location under “Debugging > Hot Reload”. No settings will be changed during this migration so all your existing choices will continue to stay in effect. Also, for the first time ever we’re enabling the ability to disable/enable XAML Hot Reload support per-platform, meaning you can disable these experiences for WPF, UWP or both.

  • Xamarin.Forms “changes only” XAML Hot Reload now supports UWP – in this release we begin to rollout support for a highly requested feature that enables the new changes only XAML Hot Reload support in Xamarin.Forms Projects when targeting UWP. Please note this feature is still in development, and while editing XAML will now trigger updates in the running app other features such as in-app toolbar (element selection, etc.) are not yet fully implemented and can have unpredictable behavior.

Top Issues Fixed in Visual Studio 2019 version 16.8 Preview 2


From Developer Community


Release Notes Icon Visual Studio 2019 version 16.8 Preview 1

released August 05, 2020

In This Release of Visual Studio 2019 version 16.8 Preview 1


Git Productivity

  • Open the Git Repository and Git Changes windows through the View menu
  • Modify the history view and search for commits through a tool bar in the Git Repository window
  • Fetch, pull, and push from the incoming and outgoing commits sections in the history graph of a branch
  • Get prompted to create a pull request after pushing a branch to your remote
  • View branch names in the merge and rebase commands in the branch list context menu
  • Access Git commands through the context menu in Solution Explorer and the Editor
  • Observe clone progress through a new modal dialog with the option to move the process to the background

C++

Razor

  • Go-to-definition/implementation for Razor, including closed files
  • Find All References in closed Razor files
  • Improved Razor editing preformance and stability for large projects and solutions

.NET Productivity

  • There is now a code fix to remove the in keyword where the argument should not be passed by reference. Place your cursor on the error. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Remove ‘in’ keyword.
Remove in keyword code fix
Remove `in` Keyword Code Fix
  • There is now a refactoring that introduces the new C#9 pattern combinators. Along with the pattern matching suggestions such as converting == to use is where applicable, this code fix also suggests the pattern combinators and, or and not when matching multiple different patterns and negating. Place your cursor inside the statement. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Use pattern matching.
Introduce C#9 Pattern Combinators
Introduce C#9 Pattern Combinators
  • There is now a code fix to make a class abstract when you are trying to write an abstract method in a class that is not abstract. Place your cursor on the method error. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Make class ‘abstract’.
Make Class Abstract
Make Class Abstract
  • In 16.7 Preview1 we added IntelliSense completion in DateTime and TimeSpan string literals. In this release, this completion list automatically appears when the first quote is typed. In the past, it was required to type (Ctrl+space) to view this completion list. Place your cursor inside the DateTime or TimeSpan string literal and type the first double quote. You will then see completion options and an explanation as to what each character means. Both the date time format and an example will be provided.
IntelliSense Completion in DateTime and TimeSpan String Literals
IntelliSense Completion in DateTime and TimeSpan string Literals
This improvement also works for interpolated strings when you type a colon
This improvement also works for interpolated strings when you type a colon
  • There is now a code fix to remove unnecessary pragma suppressions and unnecessary SuppressMessageAttributes. Place your cursor on the pragma warning or the SuppressMessageAttribute. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Remove unnecessary suppression.
Remove Unnecessary Pragmas
Remove Unnecessary Pragmas
Remove Unnecessary SuppressMessageAttributes
Remove Unnecessary SuppressMessageAttributes
  • Rename and Find All References now understands references to symbols within the target string of global SuppressMessageAttribute suppressions.
Rename SuppressMessageAttribute
Rename SuppressMessageAttribute
Find All References for SuppressMessageAttribute
Find All References for SuppressMessageAttribute
  • Visual Basic had multiple ways of passing parameters, ByVal and ByRef, and for a long time ByVal has been optional. We now fade ByVal to say it's not necessary along with a code fix to remove the unnecessary ByVal. Place your cursor on the ByVal keyword. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select ‘ByVal’ keyword is unnecessary and can be removed.
Visual Basic Remove ByVal Refactoring
Visual Basic Remove ByVal Refactoring
  • There is now interactive window support for multiple runtimes, such as .NET Framework and .NET Core.
Interactive Window Support in .NET Core
Interactive Window Support in .NET Core
  • There is a new RegisterAdditionalFileAction API that allows analyzer authors to create an analyzer for additional files.

XAML Tools (WPF, UWP & Xamarin.Forms)

XAML Designer Suggested Actions enables easy access to common properties when a control is selected within the XAML Designer. To use this feature first enable it through Options > Preview Features > XAML Suggested Actions. Once enabled click on a supported control and use the lightbulb to expand and interact with the Suggestion Actions UI. In this release supported controls include:

  • For UWP: Border, Button, Canvas, CheckBox, ComboBox, Grid, HyperlinkButton, Image, ListBox, ListView, NavigationView, RadioButton, Slider, StackPanel, TextBlock
  • For WPF: Border, Button, Canvas, CheckBox, ComboBox, Grid, Image, Label, ListBox, ListView, StackPanel, TextBlock, TextBox.

This feature is available for UWP, WPF .NET Core and WPF .NET Framework (with enabled “New WPF XAML Designer for .NET Framework” feature flag) applications and doesn’t support extensibility, nor is it feature complete.

XAML Designer: Suggested Actions
XAML Designer: Suggested Actions
  • XAML Suggested Actions - Extensibility: We've also recently introduced extensibility for 'Suggested Actions'. Now you will be able to customize and build your own suggestion dialog for your controls. For more details see our documentation in GitHub

The New WPF XAML Designer for .NET Framework Projects is now available for early preview. This brings the same designer and extensibility support available for WPF .NET Core developers to WPF .NET Framework. Benefits of this improved XAML designer includes faster load performance, 64-bit configuration support (custom controls would load normally just like they do in x86 configuration), improved stability and new features such as Suggested Actions.

To get started, go to Options > Preview Features, select “New WPF XAML Designer for .NET Framework” and restart Visual Studio. This feature is only available in the Preview channel for early testing; its final release details have not yet been determined. We encourage all WPF .NET Framework customers to give this designer a try and report any issues you encounter through the VS Feedback Hub.

XAML Binding Failures diagnostic improvements

In this release we continue to test a new features that makes becoming aware of and seeing the details of XAML binding failures easier, these improvements include:

  • New XAML Binding failure indicator icon in the in-app toolbar experience for WPF and UWP developers. This icon will change red if at least one binding fails and highlighting it will show you the total number of failed bindings in the tooltip. Clicking the icon will take you to the new XAML Binding Failures panel
  • New XAML Binding Failures panel that takes the binding failures that were previously only available in the Output window and makes them easy to review in the new dedicated experience with features such as sorting, searching and grouping of similar errors. This panel works for WPF, UWP and Xamarin.Forms projects (note: requires Xamarin version 4.5.0.266-pre3 or higher)
XAML Binding Failures Improvements
XAML Binding Failures Improvements

This feature is still in development and is only available if enabled by customers. To enable this experience, go to Options > Environment > Preview Features and enable “XAML Binding Failure Window”.

Known Limitations: Clicking on binding failures in the panel does not yet navigate to code. Also attaching to a running process will not work, you must F5 into the debug experience for this experience.

Editor

  • In this release, the legacy Find in Files experience has been deprecated and all users are being moved to the new experience. The Editor team is working with folks who leave feedback in Developer Community who are experiencing issues with the modern Find in Files experience.

Top Issues Fixed in Visual Studio 2019 version 16.8 Preview 1


From Developer Community


Known Issues

See all open issues and available workarounds in Visual Studio 2019 by following the below link.


Feedback and suggestions

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 make a product suggestion or track your issues in the Visual Studio Developer Community, where you can ask questions, find answers, and propose new features. You can also 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.


Visual Studio 2019 Release Notes History

For more information relating to past versions of Visual Studio 2019, see the Visual Studio 2019 Release Notes History page.


Top of Page