Visual Studio 2019 Preview Release Notes

09/22/2020

20 minutes to read

In this article

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.

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:

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

Added additional Visual Studio Codespaces support. Sign-up for GitHub Codespaces for Visual Studio to give it a try.

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.

Adding GitHub accounts in Visual Studio

Git Productivity

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

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++

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

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

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

Select Inline and keep <QualifiedMethodName> to preserve the original method 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 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

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

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.

From Developer Community

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.

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

List of Views in Solution Explorer

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

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

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

There is now a code fix to convert instances of typeof( <QualifiedType> ).Name to nameof( <QualifiedType> ) in C# and instances of GetType( <QualifiedType> ).Name to NameOf( <QualifiedType> ) in Visual Basic. Using nameof instead of the name of the type avoids the reflections involved when retrieving an object. Place your cursor within the typeof( <QualifiedType> ).Name. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Next, select from one of the following options:

For C#, select Convert typeof to nameof :

Convert typeof to nameof

For Visual Basic, select 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

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

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++

We have added compiler support for lambdas in unevaluated contexts which allows you to use lambdas in decltype specifiers.

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

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

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

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

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 SuppressMessageAttributes

Rename and Find All References now understands references to symbols within the target string of global SuppressMessageAttribute suppressions.

Rename 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

There is now interactive window support for multiple runtimes, such as .NET Framework and .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 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 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

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 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.