שתף באמצעות


2019Logo Visual Studio 2019 version 16.8 Release Notes



Developer Community | System Requirements | Compatibility | Distributable Code | Release History | License Terms | Blogs | Whats New in Visual Studio Docs


Note

This is not the latest version of Visual Studio. To download the latest release, please visit the Visual Studio site.



What's New in Visual Studio 2019 version 16.8

Support Timeframe

This version is now out of support. For more information about Visual Studio support, please review the Support Policy for Visual Studio 2019.

Refer to the latest version of the release notes or visit the Visual Studio site to download the latest supported version of Visual Studio 2019.

Visual Studio 2019 version 16.8 Releases

Visual Studio 2019 Archived Release Notes

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:


See this full list of all Developer Community items taken in Visual Studio 2019 version 16.8

Release Notes Icon Visual Studio 2019 version 16.8.7

released March 09, 2021

Issues Addressed in this Release of Visual Studio 2019 version 16.8.7

Security Advisory Notice

CVE-2021-21300 Git for Visual Studio Remote Code Execution Vulnerability

A remote code execution vulnerability exists when Visual Studio clones a malicious repository.

CVE-2021-26701 .NET Core Remote Code Execution Vulnerability

A remote code execution vulnerability exists in .NET 5 and .NET Core due to how text encoding is performed.


Release Notes Icon Visual Studio 2019 version 16.8.6

released February 22, 2021

Issues Addressed in this Release of Visual Studio 2019 version 16.8.6


Release Notes Icon Visual Studio 2019 version 16.8.5

released February 09, 2021

Security Advisory Notice

CVE-2021-1639 TypeScript Language Service Remote Code Execution Vulnerability

A remote code execution vulnerability exists when Visual Studio loads a malicious repository containing JavaScript or TypeScript code files.

CVE-2021-1721 .NET Core Denial of Service Vulnerability

A denial-of-service vulnerability exists when creating HTTPS web request during X509 certificate chain building.

CVE-2021-24112 .NET 5 and .NET Core Remote Code Execution Vulnerability

A remote code execution vulnerability exists when disposing metafiles when a graphics interface still has a reference to it. This vulnerability only exists on systems running on MacOS or Linux.

Issues Addressed in this Release of Visual Studio 2019 version 16.8.5

  • Fixed an issue where x86 Microsoft.VCLibs Appx installed under ExtensionSDKs updated with correct signature.
  • Fixed a memory leak when using C++ DesignTime features.
  • Fixed an issue where an exception would occur if a password is not remembered when importing an existing database into an SSDT project.
  • Fixed an issue where the publish button is disabled the first time customers publish .NET Core projects to a folder or other hosting targets.
  • Fixed a hang that occasionally occurred when developers opened the publish profiles view page.
  • Adds Xcode 12.4 support.

Items From Developer Community


Release Notes Icon Visual Studio 2019 version 16.8.4

released January 12, 2021

Security Advisory Notice

CVE-2021-1651 / CVE-2021-1680 Diagnostics Hub Standard Collector Service Elevation of Privilege Vulnerability

An elevation of privilege vulnerability exists when the Diagnostics Hub Standard Collector incorrectly handles data operations.

CVE-2020-26870 Visual Studio Installer Remote Code Execution Vulnerability

A remote code execution vulnerability exists when the Visual Studio Installer attempts to show malicious markdown.

CVE-2021-1723 ASP.NET Core and Visual Studio Denial of Service Vulnerability

A denial of service vulnerability exists in the way Kestrel parses HTTP/2 requests.

Issues Addressed in this Release of Visual Studio 2019 version 16.8.4

  • Fixed an issue where C#-specific IntelliCode components may not be installed if IntelliCode had previously been installed from the Visual Studio Marketplace in older versions of Visual Studio
  • Transitive project references are now respected when a PackageReference projects references packages.config projects with PackageReference dependencies.
  • Adds Xcode 12.3 support.
  • Fixes x86_64 watchOS 7.0+ simulator support
  • We have fixed false positives (C33001 ~ C33005) for use of VARIANTs that is returned from a function.
  • Fix for intermittent VS crash in WinForms .NET Core designer while closing project or solution.
  • Fixed Database Project: Dragging a file from solution explorer into an opened one is deleting the file from the file system!
  • Fixed Clicking update on Sql Schema Compare does not save changes to sqlproj file
  • Fixed a bug where builds failed with errors "Table/column was not found".
  • Fix "commit after merge" checkbox from Team Explorer -> Branches.
  • Fixed an error where Visual Studio may become unresponsive for several seconds while checking for updates.
  • DeploymentAppRecipe.exe tool now supports running from any current directory. It also now returns non-zero return value whenever deployment fails and prints out error messages to standard error stream.

From Developer Community



Release Notes Icon Visual Studio 2019 version 16.8.3

released December 08, 2020

Security Advisory Notice

CVE-2020-17156 Visual Studio Remote Code Execution Vulnerability

A remote code execution vulnerability exists when Visual Studio clones a malicious repository.

Issues Addressed in this Release of Visual Studio 2019 version 16.8.3

  • Fixed an internal compiler error when a nested function template is defined outside of the parent class.
  • Fixed incorrect error C2355 when 'this' is used in the initializer of a non-static data member.
  • Ruleset loading error has been fixed for custom ruleset using /analyze:ruleset option with /analyze:rulesetdirectory and/or /analyze:projectdirectory option.
  • Fix for an intermittent crash in Visual Studio while using WinForms .NET Core designer.
  • .NET 5.0.1 insertion into Visual Studio v 16.8.3
  • Fixed an issue where some of the UI context activiated tool windows can cause Visual Studio to crash.
  • Fixed Push from Manage Branches page when there is no Git remote tracking branch.
  • Added Xcode 12.2 support.

From Developer Community



Release Notes Icon Visual Studio 2019 version 16.8.2

released November 19, 2020

Issues Addressed in this Release of Visual Studio 2019 version 16.8.2

  • Fixed for optimization bug in loops.
  • Fixed internal compiler error in implementation of guaranteed copy elision (C++17 feature).
  • Fixed build perf regression for large uses of anonymous types.
  • Resolved an issue where a gold bar with the message "Specified argument was out of the range of valid values" would appear when editing C# code.
  • Fixed an issue that could cause a MissingMethodException when building a project that had T4 templates.
  • Fixes an issue where the search in the New Project Dialog could return zero results.

From Developer Community



Release Notes Icon Visual Studio 2019 version 16.8.1

released November 12, 2020

Issues Addressed in this Release of Visual Studio 2019 version 16.8.1

  • Fixed a high-impacting issue where “The 'SourceExplorerPackage' package did not load correctly.” warning pops up when cloning a repo in Team Explorer. When users encountered this problem, it would cause the product to stop responding.

Release Notes Icon Visual Studio 2019 version 16.8.0

released November 10, 2020

Summary of What's New in this Release of Visual Studio 2019 version 16.8


F#:

  • F# 5 is now released alongside .NET 5
  • Performance improvements and fixes for Visual Studio tooling via F# Tools version 11.0.0
  • Full release notes available on GitHub

C++:

  • C++20 Coroutines are now supported under /std:c++latest and the <coroutine> header.
  • IntelliSense now provides support for C++20 <concepts> and <ranges> headers, and rename and browsing for concept definitions.
  • Our STL now has support for the majority of C++20 Ranges.
  • 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.
  • Upgraded 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.
  • 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
  • Compiler support for lambdas in unevaluated contexts
  • /debug:full link performance improved by multi-threading pdb creation. Several large applications and AAA games see between 2 to 4 times faster linking.
  • The Visual Studio debugger now has support for char8_t.
  • Support for ARM64 projects using clang-cl.
  • Intel AMX intrinsics support.
  • Added a new link option, legacy_stdio_float_rounding.obj to enable the legacy behavior of printing floating-point values, which was changed in Dev16.2 to properly round exactly representable floating-point numbers. For more details, please see printf, _printf_l, wprintf, _wprintf_l.

Debugger:

  • .NET Core Linux core dump debugging support
  • .NET and .NET Core Auto Analysis
  • .NET and .NET Core memory hot path auto analysis

Experimental Razor Editor Updates:

  • Blazor light bulbs
  • C# light bulbs
  • Enhanced Razor formatting
  • Rename Razor components in markup from .razor files
  • Go-to-definition on Blazor component tag namespace
  • C# hover colorization
  • C# completion toolitip colorization
  • 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

Fakes with SDK Style Projects:

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

Git Productivity:

  • Learn more about how to use all the Git features in our new online documentation
  • Open the Git Repository window at any time through the Git Changes window, the View menu, and the Status bar
  • Fetch, Pull, and Push from multiple remotes in the Git Changes window
  • View success and error messages for Git commands at the top of the Git Repository window
  • Create a new branch from an Azure DevOps work item
  • Open a Git repository from a list of your local repositories in the Git menu
  • The default source control provider is now Git instead of TFVC
  • Single click to switch between branch histories in the Git Repository window
  • View and select from a list of solutions in Solution Explorer after opening a repository
  • 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

IntelliCode:

  • Get personalized IntelliCode completions in Visual Studio documentation
  • Keep your IntelliCode completions up-to-date with your codebase and share as part of your team's CI workflow documentation

.NET Productivity:

  • Roslyn analyzers are now included in the .NET 5.0 SDK
  • Refactoring that introduces the new C# 9 not pattern matching syntax when a suppression operator is present
  • Inline method refactoring to help replace usages of static, instance, and extension method within a single statement body
  • Code fix to convert instances of typeof to nameof in C# and GetType to NameOf in Visual Basic
  • 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
  • Refactoring that extracts members from a selected class to a new base class in both C# and Visual Basic
  • 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
  • Code fix to remove the in keyword where the argument should not be passed by reference
  • Refactoring that introduces the new C#9 pattern combinators and pattern matching suggestions such as converting == to use is where applicable
  • Code fix to make a class abstract when you are trying to write an abstract method in a class that is not abstract
  • IntelliSense completion in DateTime and TimeSpan string literals automatically appear when the first quote is typed
  • Code fix to remove unnecessary pragma suppressions and unnecessary SuppressMessageAttributes
  • Rename and Find All References understands references to symbols within the target string of global SuppressMessageAttributes
  • ByVal fades to say it's not necessary along with a code fix to remove the unnecessary ByVal in Visual Basic
  • Interactive window support for multiple runtimes, such as .NET Framework and .NET Core.
  • Added a new RegisterAdditionalFileAction API that allows analyzer authors to create an analyzer for additional files.

Visual Studio 2019 IDE:

  • Add your Github account using the account management experience
  • 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.
  • The ClickOnce publish provider is now available for .NET Core 3.1 and .NET 5.0 Windows Desktop Apps.

Wrap Test Details Pane of Test Explorer:

  • You can now wrap text in the Test Details pane of the test explorer.

XAML Tools (WPF, UWP, & Xamarin.Forms):

  • XAML Binding Failures diagnostic improvements
  • XAML Hot Reload Settings moved to "Debugging > Hot Reload"
  • Toolbox population from unreferenced NuGet packages

JavaScript/TypeScript:

  • The JavaScript/TypeScript debugger now supports debugging service workers, web workers, iFrames, and your page JavaScript all at the same time! In addition, the new debugging experience adds support for debugging your back-end node server applications and client-side JavaScript in the browser simultaneously. This feature is still experimental. You can enable the new debugging experience in the Debugging options menu
  • You can now trigger refactors anywhere they might be available by using the code action shortcut (ctrl + .). You don't even need to select any text - TypeScript is now smart enough to look around your cursor location for the best available refactors!
  • You can now fine tune which packages TypeScript searches for automatic import completion. This can lead to performance improvements in some projects with a lot of dependencies. For more details, please reference the TypeScript 4.0 (release notes)[https://www.typescriptlang.org/docs/handbook/release-notes/typescript-4-0.html]
  • We added a message in the output pane showing which types we install to support intellisense. We recommend adding a tsconfig to your project to customize which types are used.
  • Please note we include the TypeScript 4.0 compiler and language service

Security Advisory Notice

CVE-2020-17100 Visual Studio Tampering Vulnerability

A tampering vulnerability exists when the Python Tools for Visual Studio creates the python27 folder. An attacker who successfully exploited this vulnerability could run processes in an elevated context.

Issues Addressed in this Release

  • 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.
  • Added additional functionality to Visual Studio Codespaces creation and connection.
  • Fixed a bug causing Visual Studio 2019 to crash or stop responding when closing or navigating away from ASP.NET Core solutions.
  • Fixed an issue where C++ project system would fail to load after uninstalling and reinstalling Visual Studio 2019.

Details of What's New in Visual Studio 2019 version 16.8.0

C++

  • C++20 Coroutines are now supported under /std:c++latest and the <coroutine> header. Support for our legacy behaviour is available under <experimental/coroutine> and the /await switch.
  • IntelliSense now provides support for C++20 <concepts> and <ranges> 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
  • We have added compiler support for lambdas in unevaluated contexts which allows you to use lambdas in decltype specifiers.
  • 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

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 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 managed memory dump analyzers that helps identify the following scenarios and anti-patterns:

  • Sync-over-Async
  • Threadpool exhaustion

.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 Diagnostics Memory Tool window.

Fakes with SDK Style Projects Generate Shim Issues

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.

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
  • Rename Razor components in markup from .razor files
  • Go-to-definition on Blazor component tag names
  • C# hover colorization
  • C# completion toolitip colorization
  • Find All References in closed Razor files
  • Improved Razor editing preformance and stability for large projects and solutions

* Only works in local Razor scenarios, not supported yet in Visual Studio 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.

Visual Studio 2019 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
  • The ClickOnce publish provider is now available for .NET Core 3.1 and .NET 5.0 Windows Desktop Apps. To get started, right click on the project in Solution Explorer and select Publish, or select the Build > Publish <AppName> menu. ClickOnce can be found under the Folder Category.
Inline parameter name hints with GitHub Image
ClickOnce Publish provider 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

  • Single click to switch between branch histories in the Git Repository window

  • 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

.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. The analyzers are 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.

  • 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
  • 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 Preview 1 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.

Wrap Test Details Pane of Test Explorer

This highly requested feature allows the user to select text wrapping or leave the default text line alignment. When text alignment isn’t needed, wrapping can make the feedback from a test run much easier to view and eliminates the need for a horizontal scroll bar. You can enable this from the Test Explorer settings menu or the context menu of the Summary Pane.

Wrap test details from the Test Settings menu
Test settings menu
Wrap test details from the right-click context menu
Wrap test details from the right-click context menu

XAML Tools (WPF, UWP, & Xamarin.Forms)

XAML Binding Failures diagnostic improvements

Developers working on WPF, UWP, WinUI and Xamarin.Forms projects must often detect and resolve XAML data binding failures in their applications. To improve the diagnostic tooling in this scenario we have added two new experiences to Visual Studio 2019 version 16.8 or newer:

  • XAML Binding Failure Indicator Icon: a new XAML Binding failure indicator icon is now present in the in-app toolbar for WPF and UWP projects and in the Live Visual Tree for all XAML projects including Xamarin.Forms. This icon will show a red indicator if at least one binding failure is detected. Clicking the icon will also take you to the new XAML Binding Failures window.
Binding Failure Icon (in-app toolbar)
Binding Failure Icon (in-app toolbar)
  • XAML Binding Failures Window: the new XAML Binding Failures window is now available for WPF, UWP, WinUI and Xamarin.Forms projects. This new dedicated experience provides a rich user interface over the binding failure information that was previously only available in the Output Window. Improvements include the ability to see the failures as a set of columns that can be sorted, customized and are fully searchable. We have also grouped similar errors together limiting the noise that can occur during certain combination of data binding templates failures while still making all the original raw error information available and easily copyable through a right-click menu option. (note: requires Xamarin version 4.5.0.266-pre3 or higher)
  • Navigate to Source for binding failures: In partnership with the WPF team we have enabled the ability to navigate to source of a binding failures for those customers who are targeting WPF on .NET 5 (RC2 or newer).
XAML Binding Failure Window & LVT Icon
XAML Binding Failure Window & LVT Icon

XAML Hot Reload

  • 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, but will be in a future release.
  • XAML Hot Reload Settings moved to “Debugging > Hot Reload”: In this release we have consolidated the XAML Hot Reload settings across WPF, UWP and Xamarin.Forms into a unified settings screen under “Debugging > Hot Reload”. We have also for the first time enabled the ability to disable or enable XAML Hot Reload on a per-platform basis to give you full control of when this feature is available. (Note: No settings will be changed during this migration so all your existing choices will continue to stay in effect just under this new location)
XAML Hot Reload Consolidated Settings
XAML Hot Reload Consolidated Settings

XAML Code Editor:

  • WinUI 3.0 IntelliSense Support: In this release we have enabled better IntelliSense support for developers building apps using the new WinUI 3.0 preview 3 or newer. To learn more about WinUI 3.0 see the documentation and to provide feedback visit the Windows UI XAML GitHub repo. Note: The latest WinUI 3.0 preview is recommended on 16.9 Preview 1 for the updated tooling experience.
  • 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.
XAML IntelliSense for MVVM d:DataContext
XAML IntelliSense for MVVM d:DataContext

Extensibility

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

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