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
- March 09, 2021 — Visual Studio 2019 version 16.8.7
- February 22, 2021 — Visual Studio 2019 version 16.8.6
- February 09, 2021 — Visual Studio 2019 version 16.8.5
- January 12, 2021 — Visual Studio 2019 version 16.8.4
- December 08, 2020 — Visual Studio 2019 version 16.8.3
- November 19, 2020 — Visual Studio 2019 version 16.8.2
- November 12, 2020 — Visual Studio 2019 version 16.8.1
- November 10, 2020 — Visual Studio 2019 version 16.8.0
Visual Studio 2019 Archived Release Notes
- Visual Studio 2019 version 16.7 Release Notes
- Visual Studio 2019 version 16.6 Release Notes
- Visual Studio 2019 version 16.5 Release Notes
- Visual Studio 2019 version 16.4 Release Notes
- Visual Studio 2019 version 16.3 Release Notes
- Visual Studio 2019 version 16.2 Release Notes
- Visual Studio 2019 version 16.1 Release Notes
- Visual Studio 2019 version 16.0 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:
- Visual Studio 2019 v16.9 Preview 3 is Available Today!
- Visual Studio 2019 v16.9 Preview 2 and New Year Wishes Coming to You!
- Visual Studio 2019 v16.8 and v16.9 Preview Available Today
- New Features in Visual Studio 2019 v16.8 Preview 3.1
- Visual Studio 2019 v16.8 Preview 2 Releases New Features Today!
- Visual Studio 2019 v16.7 and v16.8 Preview 1 Release Today!
- Visual Studio 2019 v16.7 Preview 2 Available Today!
- Exciting new updates to the Git experience in Visual Studio
- Releasing Today! Visual Studio 2019 v16.6 & v16.7 Preview 1
- Visual Studio 2019 version 16.6 Preview 2 Releases New Features Your Way
- Visual Studio 2019 version 16.5 is now available!
- 'Tis the Season for Visual Studio 2019 v16.4 Release
- Visual Studio 2019 v16.4 Preview 2, Fall Sports, and Pumpkin Spice
- .NET Core Support and More in Visual Studio 2019 version 16.3 - Update Now!
- Visual Studio 2019 version 16.3 Preview 2 and Visual Studio 2019 for Mac version 8.3 Preview 2 Released!
- Visual Studio 2019 version 16.2 and 16.3 Preview 1 now available
- Visual Studio 2019 version 16.2 Preview 2
- Visual Studio 2019 version 16.1 and Preview 16.2 Preview
- Visual Studio 2019: Code faster. Work smarter. Create the future.
See this full list of all Developer Community items taken in Visual Studio 2019 version 16.8
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.
Visual Studio 2019 version 16.8.6
released February 22, 2021
Issues Addressed in this Release of Visual Studio 2019 version 16.8.6
- Fixed a high priority bug blocking developers from pushing code to Azure Functions or other Azure resources from Visual Studio 2019.
- VS 16.8.5 Create a Git repository - Create a new GitHub repository - PUBLIC (unchecked Private option) - FAIL
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
- Fixed an issue where .sqlproj is not updating with changes.
- Visual Studio 2019 crashes with OOM failures on Chromium solutions.
- Bug in optimization compiler of Visual Studio 2019 version 16.7.6
- Visual Studio crashes when Adding New Item -> Table on a Database project.
- VSDIIUnregisterServer is slowing Visual Studio 2019 down.
- Unexpected Visual Studio 2019 crash when docking or splitting windows.
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
- After 16.8 update getting lot of code analysis errors despite certain rules set to warning
- A .NET Core 3.1 or .NET 5.0 application installed by ClickOnce may fail to start after being installed.
- C33005 false positive with _variant_t
- Git merge and commit operation bug
- Unable to view Task or parallel stacks information with net5.0-windows* TFM
- Clicking update on SQL Schema Compare does not save changes to sqlproj file
- Database Project: Dragging a file from solution explorer into an opened one is deleting the file from the file system!
- Intellicode model training fails on Visual Studio 2019
- Open LiveShare collaboration sessions fail
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
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
- KeyNotFoundException reported by SolutionAssetStorage.GetAssetAsync results in gold bar
- IntelliSense fails because designtime build can't find 'GetClCommandLineForReference' target
- IOException (Pipe is broken) reported by GetAssetAsync
- Search is not working
- Optimizer incorrectly removed EH information causing some exceptions to crash
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.
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.
- .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
- 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
- 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
tonameof
in C# andGetType
toNameOf
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 useis
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 unnecessarySuppressMessageAttributes
Rename
andFind All References
understands references to symbols within the target string of globalSuppressMessageAttributes
- 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.
- 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.
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:
- Add <FakesUseV2Generation>False</FakesUseV2Generation> to a PropertyGroup in your csproj file.
- Add the <Fakes Include="Fakes\*.fakes" /> to an ItemGroup in your csproj file.
- 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
- Add
- 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.
- 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.
Git Productivity
- 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, 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
.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.
- 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.
- 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:
Select Inline and keep <QualifiedMethodName>
to preserve the original method 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.
- 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.
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
:
For Visual Basic, select 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.
- 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.
- There is now a refactoring that introduces the new C#9 pattern combinators. Along with the pattern matching suggestions such as converting
==
to useis
where applicable, this code fix also suggests the pattern combinatorsand
,or
andnot
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.
- 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’.
- 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.
- There is now a code fix to remove unnecessary pragma suppressions and unnecessary
SuppressMessageAttributes
. Place your cursor on the pragma warning or theSuppressMessageAttribute
. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Remove unnecessary suppression.
- Rename and Find All References now understands references to symbols within the target string of global
SuppressMessageAttribute
suppressions.
- 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.
- There is now interactive window support for multiple runtimes, such as .NET Framework and .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.
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.
- 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 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 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.
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
- Cannot compile WPF applications targeting .NET 5
- Using msbuild.exe from the command line for Xamarin.iOS, hangs on completion
- Disabling IntelliCode 2.2.733.31896 breaks TypeScript 3.x with a CompositionFailedException when editing a .ts file
- Typescript intellisense keeps stopping
- VS2019 C++ - Invalid code generated with Optimize
- Background Tasks reports endless "C/C++ IntelliSense Operation in progress"
- WPF Designer error: Calculated node path is invalid -- null->Window:Grid
- Visual Studio 16.8.0 Preview 4 Process Disappears
- Scrolling through Exception Settings window causes VS to crash
- USE_ATL_THUNK2 macro from atlstdthunk.h cannot be undefined
- Frequent crashes of Visual Studio Community 2019 16.7.x
- Going to NuGet Package Manager Crashes Visual Studio
- asan with avx2 reports stack-buffer-overflow
- Unable to close VisualStudio - Cannot access a disposed object
- An exception of type NullReferenceException has been encountered.
- Visual Basic Analyzer Template issues
- VS crashes while typing in .cs file
- New Variant Checks in C++ Code Analysis (VS 2019 Update 8 Preview 3) don't occur/work
- Opening a C++ solution with external dependency files causes those external dependency file tabs to show "An error has occurred in..."
- C++ builds with Windows SDK 8.1 fail after upgrade to Visual Studio 16.7
- ARM64 C++: 16.4 -> 16.5+ regression.
- csproj has changed on disk. Close the editor and reopen it
- ServiceHub.Host.CLR.x64 has stopped working
- ASAN x64 - CMake does not seem to be supported
- VS2019 WSL C++ compilation fails intermittently when Max Parallel Compilation Jobs is set to number of available processors
- Rebuilding project removes entire output folder (remote compilation)
- VS2019 still wipes CMakeBuild directory each time I touch CMakeFiles.txt or CMakeSettings.json
- IntelliCodeCppPackage failed to load
- Build error in CMake project WSL configuration caused by "/mnt/" prefix
- CMake : Environment variables created in CMakeSettings.json no longer expanded since upgrading to VS 16.7
- Schema Compare does not evaluate SQLCMD variables when comparing DACPAC against Project Source Code
- Separation of build and debug should not deploy .o files
- Module with partition won't compile
- Get the message "Working on it" when switching to a tab
- Visual Studio S2019 Debugger Confused by multiple variables with same name
- String literal delimiter highlights after bracket
- Unable to define a coroutine with a promise_type that is not default constructible
- C/C++ IntelliSense: No member list appears after typing var. after an arithmetic operator in C files
- Codelens references not updating when making code changes in another file
- Go To Definition goes to std::function constructor instead of lambda arg's class
- HLSL Shader Compiler fails to create output directory for header files
- nexpected error C2027: use of undefined type when using templates with /permissive
- D9025: overriding '/sdl-' with '/GS-'
- constexpr appears to dislike reference-to-pointer
- The document is already open as a project or a solution and cannot be opened in an editor at this time.
- Coverage on switch expression dropped in 16.7
- C5045 warning firing even though I have it disabled
- Xamarin.Forms Can't create Archive for iOS !
- CImage::Draw() has ambiguous call to DrawImage() in 16.7.0 Preview1
- Views missing when loading a "Open Folder" Project with Pinned Taskbar Icon
- C++: compiler selects wrong overload candidate
- Can't Create new VB VSIX project with CodeFix
- VS2019 Find Results not using Font/Color Settings
- Editing .editorconfig file in large solution makes editor painfully slow, high CPU and RAM usage, sometimes crashes
- Ctrl+F Search Results are shown as text, but I want to see the results in the new structured search results window
- Publish button is not visible
- Save doesn't save
- Solution/Project name longer than 60 characters is not allowed.
- You have a new license for Visual Studio Enterprise 2019 available message.
- Git view with dark mode is not looking correct.
- Visual Studio 2019 crashes while doing code analysis in the background and does not recover files.
- Failed to add Apple Developer account with two step authentication.
- Fold expression in noexcept generates a syntax error.
- Gold bar following RPC exception in StreamPipeReader.AdvanceTo: No reading operation to complete.
- SQL Server Project crashing when editing columns using design panel.
- Visual Studio 2019 Preview: ssh+git:// repository does not ask for credentials, but reports error instead.
- Std::enable_if does not remove conversion operator from overload set.
- Pull request page is broken.
- Enable_if_t SFINAE problem
- Std::condition_variable::wait_for(0) does not unlock the lock
- Taking address of a temporary is not caught by the compiler.
- NullPointerException is thrown when renaming a class together with symbol's file.
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.