Visual Studio 2019 version 16.10 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.10
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.10 Releases
- July 20, 2021 — Visual Studio 2019 version 16.10.4
- June 29, 2021 — Visual Studio 2019 version 16.10.3
- June 15, 2021 — Visual Studio 2019 version 16.10.2
- June 08, 2021 — Visual Studio 2019 version 16.10.1
- May 25, 2021 — Visual Studio 2019 version 16.10.0
Visual Studio 2019 Archived Release Notes
- Visual Studio 2019 version 16.9 Release Notes
- Visual Studio 2019 version 16.8 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.10 and v16.11 Preview 1 are Available Today!
- Enhanced Productivity with Git in Visual Studio
- Available Today! Visual Studio 2019 v16.9 and v16.10 Preview 1
- 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.
Visual Studio 2019 version 16.10.5
Summary of What's New in this Release of Visual Studio 2019 version 16.10.5
This version of Visual Studio 2019 is only available through Windows Software Update Service (WSUS).
Top Issues Fixed in this Release
- The iOS Remoted Simulator will now work properly with paired Mac devices that have Xcode 12.4 or 12.5 installed. The following Xcode simulator features are not available when paired to Mac devices with Xcode 12.4, or higher, installed:
- Simulated memory warning
- Simulated locations
Security Advisory Notice
CVE-2021-26423 .NET Core Denial of Service Vulnerability
A denial of service vulnerability exists where .NET (Core) server applications providing WebSocket endpoints could be tricked into endlessly looping while trying to read a single WebSocket frame.
CVE-2021-34485 .NET Core Information Disclosure Vulnerability
An information disclosure vulnerability exists when dumps created by the tool to collect crash dumps and dumps on demand are created with global read permissions on Linux and macOS.
CVE-2021-34532 ASP.NET Core Information Disclosure Vulnerability
An information disclosure vulnerability exists in where a JWT token is logged if it cannot be parsed.
Visual Studio 2019 version 16.10.4
Summary of What's New in this Release of Visual Studio 2019 version 16.10.4
Top Issues Fixed in this Release
- Remove use of disallowed registers in memset.
- Fixed a codegen bug involving complicated nested expressions involving the bitwise-not operator.
- Fixed shader debugging for VS Graphics Analyzer
- Fixed an IntelliSense crash that occurred when processing static data members in in-class template specializations.
- X64 VC Redist no longer removes runtime files when run with /installer /passive switches.
- Corrected an issue where the include search order may be incorrect when prepended to "Include Directories".
- We have fixed performance problem and false positives caused by one of the checker extensions that finds bugs in misuse of VARIANTs.
- We have fixed performance problem caused by one of the checker extensions that finds bugs in misuse of enum values as index.
- Introduces Live Share language services fix that restores major code editing features for collaboration session participants (code completion, syntax highlighting, errors, etc.)
- Concurrency analyzer should no longer produce false warnings C26110 (failure to acquire lock) with auto-lock patterns.
- C# and Visual Basic compilers fixed a crashed involving InternalsVisibleTo clashing with other assembly level attributes.
- We have fixed an issue experienced by customers packaging their projects with Windows Application Packaging Projects, such as WPF NetCore apps and Project Reunion apps:
Error Assets file '...\obj\wappublish\win10-x86\project.assets.json' not found. Run a NuGet package restore to generate this file. App4 (Package) C:\Program Files\dotnet\sdk\5.0.302\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets 242
This problem was caused by the Packaging Project looking for the project.assets.json file in the wrong directory, win10-$(configuration), when it should be looking in win-$(configuration).
From Developer Community
- Compile erros for external headers
- Incorrect lock warnings by analyzer C26110
- Internal compiler error occurs after upgrade to v16.10 Visual Studio when an assembly is declared in the InternalsVisibleTo attribute
- Vcredist_x64.exe (14.29.30038.0) shipped with Visual Studio 16.10.2 incorrectly removes msvcp140.dll after second install using /passive switch
- VS 16.10.1 code generation issue (x86 only)
- Address Sanitizer should allow triggering of crash dumps without the use of an environment variable
- Graphics Analyzer stopped working when click the triangle after Vertex Shader to start shader debugging
- Vsftest : Testing NMI
- Project Reunion Publish problem
- The tool in LKG12 WAVE2 needs updates before it ships
- Unable to package a WinUI 3 App into MSIX
- Graphics Debugger - Shader-Debugging broken after update to 16.10.3?
- Unable to package a WinUI 3 App with Project Reunion 0.8
Visual Studio 2019 version 16.10.3
released June 29, 2021
Summary of What's New in this Release of Visual Studio 2019 version 16.10.3
Top Issues Fixed in this Release
- Fixing an issue where Go To Definition on symbols imported from modules sometimes goes to the start of the module file rather than the symbol's definition.
- Fixed an issue where visually impaired developers would face difficulty to identify the focus on the screen since the Luminosity ratio of border color is less than 3:1 for the text box.
- Fixed Database Project: Dragging a file from solution explorer into an opened one is deleting the file from the file system.
- Fixed an issue where using a merge statement in database projects will result in build errors.
- No longer send paths on disk when reporting which extensions are installed.
- Fixes an issue where attempting to close the quick start window can cause Visual Studio to crash.
- Fix an issue where showing tool windows sometimes crash VS.
- Fix for C++ Edit and Continue in user-code when unrelated G++/GCC generated symbols are loaded in the application.
- Fixes private selector usages from the iAd framework.
- Fixed a crash in VS which results from errors occurring in the XAML Designer
- Fixed an issue with the Windows Application Packaging projects that reference .netcoreapp projects are generating a .msixbundle.
- Fixing failure to conduct fast up-to-date check on WAP projects which was causing those projects to be built (instead of being skipped), even when project is up-to-date and does not need modifications, further causing increased incremental build times in IDE.
From Developer Community
[C++, IntelliSense, 16.7.7]
Size of member function pointer is wrong in Tooltip- 16.9.2 Freezing when working on SQL Server project
- C++20 IntelliSense gives incorrect errors with range-v3 version 0.10.0
- Intellisense issue with modules
- Xamarin Forms iOS SkiaSharp DirectoryNotFoundException
- Version 16.10.0 release editor problem - no longer possible to navigate code using the elements combo box
- C++ 20 Modules: When clicking "Go To Declaration", the cursor jump position is incorrect
- "Enable device code flow when adding an account" option is missing from v16.10
- VS 2019 16.10.0 PackageInspectionFailed: Failed to load Info.plist from bundle, No such file or directory
- App store package contain 32-bit files
- 16.10.2 does not connect to Mac
- vsftest: Testing NMI
Visual Studio 2019 version 16.10.2
released June 15, 2021
Summary of What's New in this Release of Visual Studio 2019 version 16.10.2
Top Issues Fixed in this Release
- The concurrency checks in code analysis got smarter. They are harder to fool with complex control flow.
- This fix restores the behavior for external headers by skipping analysis of external headers and suppressing warnings from external headers.
- Fixed .aspx/ascx files where users may see incomplete IntelliSense or experience slow performance.
- Fixed scalability issues with the Unity CodeLens provider when working on large projects.
- Reinstated translated strings in the Azure Service Authentication options page.
- Fixed intermittent visual code display issues when using Resharper extension.
- Fixed an issue where certain tool windows, editors, and designers would be rendered too small to display any content.
- Fixes Xamarin iOS missing app icon problems, either when running an app or when trying to publish it to the App Store.
- Building projects with AOT+LLVM no longer fails with an XA3001 error.
- After upgrading to Visual Studio 2019, version 16.10, under certain circumstances, publishing of UWP apps may fail with error message "The specified resource name cannot be found in the image file". This is now fixed.
- Fixed an issue causing Visual Studio 2019 to stop responding when device configuration changes.
- Fixes three issues in MSBuild:
- Avoids MSB4017 errors when building in Azure DevOps.
- $(
[MSBuild]
::MakeRelative()) again preserves trailing slashes in its input. - Exclude globs with a trailing ** pattern again exclude files without . characters
From Developer Community
- Developer Community has a complete list of all of items shipping in this release.
- ClickOnce won't publish a project.
- ClickOnce Publish for .NET 5.0 fails when SelfContained=true and the project references another project.
- ClickOnce does not work again.
- ClickOnce Publish: metadata file could not be found (wrong directory used), publish works on CLI
- ClickOnce tries to gather libraries from the wrong folder, when publishing! (.Net 5)
- After update Visual Studio 2019 Version 16.10.0 build ClickOnce is not working.
- Build regression in 16.10.0 with EWDK
- Publish has encountered an error.
Visual Studio 2019 version 16.10.1
released June 08, 2021
Summary of What's New in this Release of Visual Studio 2019 version 16.10.1
Top Issues Fixed in this Release
- Fixed an issue causing a crash with the IntelliSense compiler.
- Fixed an issue that could cause Visual Studio 2019 instances from closing if the Test Explorer is open in the solution.
- Fixed a failure when developers would build partial solutions from the command line.
- Fixed a failure in ClickOnce Publish for .NET Core applications.
- Fixes an issue where the call stack window can crash Visual Studio 2019.
- Fixes build error "Metadata file '***\bin\Debug\NativeLibrary.dll' could not be found" when building iOS Binding projects.
Security Advisory Notice
CVE-2021-31957 ASP.NET Denial of Service Vulnerability
A denial of service vulnerability exists when ASP.NET Core improperly handles client disconnect.
From Developer Community
- Developer Community has a complete list of all of items shipping in this release.
- Build regression in 16.10.0 with EWDK
Visual Studio 2019 version 16.10.0
released May 25, 2021
Summary of What's New in this Release of Visual Studio 2019 version 16.10.0
C++
- All C++20 features are now available under the
/std:c++latest
switch. While MSVC’s implementation of the C++20 standards (as currently published by ISO) is feature complete, some key C++20 library features are expected to be amended by upcoming Defect Reports (ISO C++20 bug fixes) that may change them in an ABI-incompatible way. Please see Microsoft/STL Issue #1814 for more details.- C++20 immediate functions & constinit support added in 16.10
- The final pieces of
<chrono>
: new clocks, leap seconds, time zones, and parsing - Implementation of
<format>
for text formating
/openmp:llvm
is now available on x86 and ARM64, in addition to x64- Include directories can now be designated as external with customized compilation warning levels and code analysis settings.
- Added the
/await:strict
switch to enable C++20-style coroutines in earlier language modes. - Debugger visualization of
std::coroutine_handle<T>
now displays the original coroutine function name and signature and the current suspend point. - Added support for CMakePresets.
- You will now be required to accept or deny the host key fingerprint presented by the server when adding a new remote connection in Visual Studio.
- Added an
/external
switch to MSVC for specifying headers which should be treated as external for warning purposes.
- Ability to create a launch profile that configures which services to start in your Compose file.
- Ability to tag an image.
- Added a Volumes tab for containers.
- Added a Labels tab for containers.
- Added a Labels tab for images.
- Containers are now grouped by Compose project.
Editor
- For folks who want a less crowded experience, line spacing can be modified by searching for "line spacing" in Visual Studio Search (Ctrl+Q). The option is under Text Editor\General.
- Find in Files and Find all References have a control to keep results. Based on feedback from our community, we've added an option to toggle the "Keep Results" option to on by default. This option can be found by searching for "keep search results by default" in Visual Studio Search (Ctrl+Q). The option is under Environment\Find and Replace. Note that users are currently limited to 5 results for Find in Files and 5 more results for Find all References.
- A new option in Find in Files allows users to run additional searches and append those results to a previous search.
Editor Extensibility
- The behavior of the code that manages IntraTextAdornmentTags has changed. With this change, just like with any other ITagger, you must raise a tags changed event when the underlying tags change. Otherwise, your tags may never be updated.
- Diagnostic Analysis of memory dumps now includes Managed Linux core dumps.
- Jump to the web with deep links to create a new pull request and view PRs on GitHub or Azure DevOps from the Git menu.
- Checkout local and remote branches with a single select from the branch picker.
- Remove items from the repository picker through the context menu.
- Turn on automatic loading of the solution when opening a Git repository through Git > Settings.
- Toggle behavior of double-clicking to check out branches from the Git Repository window through Git > Settings.
- Sync (Pull then Push) your branch with multiple remotes from the Git Changes window overflow menu.
- Customize your visible Git Changes window toolbar actions (Fetch, Pull, Push, Sync) from the overflow menu.
- Open your repository in the browser from the Git Changes window overflow menu.
- Search and checkout local and remote branches from the status bar.
- Search and switch between local Git repositories from the status bar.
- Fixed an issue where local repositories list in the Git menu wasn't loading on Visual Studio launch.
- Add nested project sub-repos to your local repositories list when opening a repository.
- Keep solution open when switching repositories through Git > Settings.
- Turn off open folder when opening repositories through Git > Settings.
- Sync your branch with the remote from the unpushed commits button in the status bar, and from the Sync command in Git Menu.
- Fetch and pull from the Git Repository window history pane even when there are no incoming commits.
- View Commit Details and the comparison of file changes embedded in the Git Repository window.
- Automatically re-connect or prompt to establish initial Azure DevOps connection when opening an Azure DevOps Git repository.
- Merge and rebase with visible branch names, replacing confusing Source / Target terminology.
- Improved performance and reliability for source control glyphs in Solution Explorer.
- Preserve incoming/outgoing sections in Git Repository window even when empty.
- Consolidated Fetch/Pull/Push dropdowns for multiple remotes in Git Changes window to a single Action menu.
- Argument completion in method calls
- EditorConfig UI
- Visually inspect and navigate the inheritance chain
- IntelliSense completion for casts, indexers, and operators
- Debugger support for Source Generators
- Code cleanup support for Visual Basic
- Edit and Continue (EnC) updates
- Remove Unused References
- Smart Break Line
- Simplify LINQ expression refactoring
- IntelliSense completion for Enum values
- IntelliSense completion mode setting
- Code style preference for new lines
- Find All References support for Source Generators
Razor (ASP.NET Core) Preview Editor
- IntelliSense completion updates
- Go to Definition support for generic components
- New code style configuration for tabs and spaces
- Razor text editor in Tools Options is now called Razor (ASP.NET Core)
Test Experience Accessibility improvements
- Console.Writeline now shows in the Test Explorer
- Test output can now preserve tags so hyperlinks and stacktrace links are navigable even from the log files.
- Log files are created for a single test result when output is over 300 characters or if there are over 10 files attached to the test result.
- Log files can also now open in preview so it’s easier to manage your tabs.
- Log files and the Test Explorer support Ctrl PgUp/PgDn for navigating the cursor and Shift+Ctrl PgUp/PgDn for selection.
- The log file editor is now using the IVsTextView interface which means it will now be able to open very large text files. This should eliminate the need for users to
Copy All
truncated logs and open them in a separate editor such as Notepad. For MSTest, we now also include a single log file that aggregates all the output instead of only having individual log files for each data row. - You can now get cross-platform code coverage at the command-line on Ubuntu and Alpine with the dotnet cli. For users interested in getting code coverage on machines targeting those platforms you can now add the same code coverage collection commands that you'd normally use on windows. See more documentation for dotnet test.
- There is now an expand all button next to the collapse all button in the Test Explorer. This command has been available through keyboard shortcuts (Ctrl+A, Ctrl+ right arrow), but more feedback indicated adding a button was worth the additional UI. As always, thank you for letting us know what you think via https://developercommunity.visualstudio.com/.
- There are also some slight changes to how the Test Explorer shows "staleness." "Staleness" is the grayed out or "faded" test results that indicate the result was not from the latest test run. If a result is not a part of the most recent test run it will appear as stale. Previously, new test discoveries (or even old test results that were rediscovered) were also shown with solid icons. This caused some confusion on why some 'Not Run' tests were faded and why others were not. This change will reduce the complexity of staleness.
- With the persisted test results feature (added in version 16.2) you can see test results from the last test run even if you've closed and re-opened Visual Studio. This helps users remember where they left off and gives more context without requiring another test run. We also modified the behavior of persisted results so they will always appear stale. This better indicates that they were not from a test run that executed during the current Visual Studio session.
- Switch to V2 of API for Azure AD provisioning
- Azure App Configuration as a Connected Service now supports dynamic configuration
Windows Application Packaging Project Dependencies Tree
- Added a "Dependencies Tree" to the WAP Project
- Improved XAML IntelliSense and XAML Hot Reload for Xamarin.Forms customers
- Introduced XAML Sample Data for select ItemsControls in WPF
- Added new lightbulb for quick access to commonly edited properties
- Added new lightbulb in the XAML Editor to help create a view-model
- Introducing StartupServices.xml in Service Fabric Applications
Details of What's New in Visual Studio 2019 version 16.10
Docker Tools
Containers Tool Window
In this release, we made additions to the Containers tool window to make it easier to view and interact with containers and images. Just navigate to View > Other Windows > Containers to try out the new features.
- Containers are now grouped by Compose project. This makes it simple to tell which containers represent your application. Also shown, we added a Labels tab in Containers so you can easily see which labels you are using during development.
- We also added a Labels tab for images.
- The new Volumes tab allows you to see the volumes of a running container and even open the files in Visual Studio.
- We now support the ability to tag an image from the Containers tool window. From Images, right-click an image and select Tag.
Compose
- Docker Compose tooling in Visual Studio now provides the ability to run any combination of services defined in your Compose files. Either open the Debug dropdown or right-click on your docker-compose project and select Manage Docker Compose Launch Settings to get started.
Git Productivity
- To start making it easier to create pull requests while you're in Visual Studio, we added menu items that are deep link shortcuts to the webpages that allow you to create a PR or view a list of PRs for your repository. The menu is dynamic based on whether your repository is on GitHub or Azure DevOps.
- The branch picker in the status bar and the Git Changes window now checks out a local or remote branch when you single-select the branch. You can find additional actions in the context menu.
- The new repository picker in the status bar has a context menu on right-click that allows you to remove items from the list.
When using the repository picker or Git menu Local Repositories list, opening a repository won’t automatically load the solution anymore. You’ll instead see the folder view and solution available in a list you can select from. You can change this behavior through Git > Settings by toggling the checkbox.
You can choose to check out a branch from the Git Repository window by double-clicking the branch name. If you want to change this behavior, then toggle the checkbox in Git > Settings.
- You can perform even more actions now from the Git Changes window. The toolbar icons are customizable and you can choose which actions to show. You can Sync with multiple remotes from the overflow menu. And you can open your repository’s remote webpage in the browser.
- Search local and remote branches and perform common branch actions from the status bar branch picker.
- Search and switch between local Git repositories from the status bar repository picker.
- Fixed an issue where the local repositories list in the Git menu wasn't loading on Visual Studio launch.
- We added two new options in Git > Settings to manage how you open and switch repositories. You can now keep the current solution open when switching to another repository
- You can also choose to not load the repository root folder when opening a repository.
- Sync (Pull then Push) your branch with the remote from the unpushed commits button in the status bar, and from the Sync command in Git Menu.
- Fetch and pull from the Git Repository window history pane even when there are no incoming commits. Access these sections from the status bar or the keyboard shortcut Ctrl+0+Y.
- Select a commit in the Git Repository window to view its details and the comparison of file changes without having to navigate to other windows. Select two commits and right-click to compare them in the same window. Pop out the details into their own window for full screen visibility to deep-dive into the changes.
- View the number of deletions and insertions in a file, and change the layout of the comparison.
- Automatically re-connect or prompt to establish initial Azure DevOps connection when opening an Azure DevOps Git repository. This enables access to work items and builds for the opened repository.
">
- When resolving rebase or merge conflicts, the merge editor and the context menu will show you the branch names for the Current and Incoming branches. This fixes the confusing Source and Target terminology.
.NET Productivity
- We added a Remove Unused References command that allows you to clean up project references and NuGet packages that have no usage. This option is off by default so you will need to enable it in Tools > Options > Text Editor > C# > Advanced and select Show “remove Unused References” command in Solution Explorer (experimental). Once the option is enabled the Remove Unused References command will appear in the right-click menu of a project name or dependencies node in Solution Explorer:
Selecting Remove Unused References will open a dialog where you can view all references that are going to be removed with an option to preserve the ones that you want to keep:
- We added a new command called Smart Break Line that automatically inserts a set of braces and places the caret within those braces when using Shift+Enter as a commit character. Smart Break Line works for all type declarations that require braces as well as properties, events, fields, and object creation expressions. The example below shows Smart Break Line used on a class and a field. If the field doesn’t have a semicolon at the end, typing Shift+Enter will convert the field to a property by adding a set of braces. You can press Shift+Enter again to undo the commit which will also automatically add a semicolon at the end of the field:
- There is now a refactoring to simplify LINQ expressions which will remove the unnecessary call to the Enumerable for the .Where() method to help improve performance and readability. Place your cursor on the LINQ expression. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Simplify LINQ expression.
- There is now IntelliSense completion for Enum values when a type is known even if the Enum name is not entered.
- We added a new IntelliSense completion mode setting that gives you the ability to set default completion options. This new setting is available in Tools > Options > Text Editor > Advanced > Default IntelliSense completion mode where you can choose from the following options: Last used which will preserve the last setting you used with Ctrl+Alt+Space, Tab-only which will only complete on tab, and Automatic which is currently the default behavior that will complete on punctuation and special characters.
- We added new code style preferences for new lines. You can configure these preferences with an EditorConfig file or within Tools > Options > Text Editor > C# > Code Style > New line preferences (experimental).
For example, you can set your code style preference to report a diagnostic and offer a code fix to remove extra blank lines:
There is now Find All References support for Source Generators that allows you to find references in a source generated document.
There is now a completion option that automatically inserts arguments when writing a method call. This feature is off by default so you will need to enable it in Tools > Options > Text Editor > C# > IntelliSense and select Tab twice to insert arguments (experimental). Start writing a method call and press tab twice (tab+tab). Notice that the method call includes arguments based on the method’s default values. You can then use parameter info to cycle through the list of arguments that you would like inserted by pressing the up and down arrow keys. You can also start typing an argument to bring up the IntelliSense completion list and type semicolon which will commit the argument and add a semicolon to the end of the method call.
- We created a UI for EditorConfig. Open any C# or Visual Basic EditorConfig file from your solution. Notice that the new UI will open displaying code style and code quality configuration option for both C# and Visual Basic.
- There is now a visual representation for navigating and inspecting the inheritance chain. This option is off by default so you will need to turn it on in Tools > Options > Text Editor > C# > Advanced and select Show inheritance margin. Enabling inheritance margin will add new icons to the margins representing your code’s implementations and overrides. Clicking on the inheritance margin icon will display inheritance options that you can select to navigate to.
- There is now IntelliSense completion for casts, indexers, and operators.
- There is now debugger support for Source Generators. You will first need to install the .NET Compiler Platform SDK component from the Visual Studio Installer. You will then need to add the
<IsRoslynComponent>
true</IsRoslynComponent>
property to your your project file. Next, enable the 'Roslyn Component' debugger option in the Project Properties Debug page and select the appropriate target project. Next, press F5 on the generator project which will start the CSC.exe/VBC.exe that builds the target project allowing you to debug the generator code.
In this release we also added the following enhancements to the Edit and Continue (EnC) debugging experience in Visual Studio:
- It is now possible to apply changes in code that is within a partial class.
- You can now apply changes within a Source Generated) file.
- It is now possible to add and/or change a using directive.
- Improvements in reliability and lower memory consumption.
All three changes are available anywhere where EnC is supported today and work with both C# and Visual Basic source files.
Debugger & Diagnostics
- We have developed several analyzer to help catch common issues in managed memory dumps. This analysis can now be performed on managed Linux core dumps.
Thank you
Last but certainly not least, a big Thank You to the following people who contributed this month to .NET Productivity (a.k.a. Roslyn):
- Valery (@m08pvv): Hoisted loop invariant condition PR #52168
- Martin Strecker (@MaStr11): Support inlining of other interpolated strings PR #49229, IntelliSense for cast, indexers, and operators PR #47511
- Bernd Baumanns (@bernd5): Fix “Information Loss" caused by use of default in SyntaxNode-Update methods PR #52036, Fix NormalizeWhitespace String Interpolation with Initializer-expressions PR #51213
- C-xC-c (@C-xC-c): Rename record equality parameters to 'left' and 'right' PR #51973
- Kai Jellinghaus (@HurricanKai): Change Compilation.CommonSyntaxTrees to use ImmutableArray PR #51905
- Huo Yaoyuan (@huoyaoyuan): Ignore extern methods in naming style PR #51728, Address NRT issues found by targeting net5.0 PR #50895
- Alireza Habibi (@alrz): Fix parenthesized pattern parsing PR #49621
- Paul M Cohen (@paul1956) Add Code Cleanup support for Visual Basic PR #48092
- Petr Onderka (@svick): Make DocumentationCommentCompiler work after NormalizeWhitespace PR #47360
- Youssef Victor (@Youssef1313): Update IDEDiagnosticIDConfigurationTests to be exclusive rather than inclusive PR #52078, Obsolete ImportingConstructor PR #52073, Consistent ContainsSyntaxTree behavior between VB and C# PR #52050, Ensure to get the name of nameof argument PR #52016, Fix null annotation of SyntaxFactory.UsingStatement PR #51984, Simplify CSharpRequiredLanguageVersion PR #51881, Display effective language version for #error version PR #51880, Update SymbolEqualityComparer.IncludeNullability docs PR #51724, Include source generators in TryGetMethodDescriptorAsync PR #51686, Make var patterns bindable PR #51620, Use Boxes in SyntaxToken.Value PR #51546, Fix Function Pointer RefKind Display PR #51223, Handle patterns in switch expressions PR #50984, Add ImplementationAttributes to IMethodSymbol PR #50560
- Benjamin Schäublin (@bschaeublin):
- Fixed redundant text in remark for MetadataReference overload PR #51242
- Martin Strecker (@MaStr11):
- piotrstenke (@piotrstenke):
- Updated properties pointing to themself in the
<see>
tag in GeneratorContexts.cs PR #50896
- Updated properties pointing to themself in the
- Huo Yaoyuan (@huoyaoyuan):
- Updated keyword recommender to know about structs readonly members PR #50820
- Yair Halberstadt (@YairHalberstadt):
- Support for mixed declaration and assignment in deconstruction PR #44476
- Youssef Victor (@Youssef1313):
Razor (ASP.NET Core) Preview Editor
The new preview Razor editor now supports the following Razor editing features:
- IntelliSense completion now filters for HTML components, TagHelper elements, and C# attributes:
- IntelliSense completion for C# overrides.
- Go to Definition support for generic componenets.
- New code style configuration options for tabs vs spaces. These code styles will be respected when typing, formatting, and creating a new Razor file. You can configure tabs and spaces in Tools > Options > Text Editor > Razor (ASP.NET Core) > Tabs.
- The Razor text editor in Tools Options has been renamed from ASP.NET Core Razor Language Services to Razor (ASP.NET Core).
To enable the new preview Razor editor, go to Tools > Options > Environment > Preview Features, select Enable experimental Razor editor, and then restart Visual Studio.
Test Experience Accessibility Improvements
- Console.Writeline now shows in the Test Explorer! Long output appears as a collapsible section in the test detail summary pane. Output over a certain length displays the first several lines and is then truncated with an option to open the test log in a separate window. The stacktrace truncates if there are over 20 frames and will then only show the first and last 10 frames. An important part of the truncation design was also focused on reducing VS freezes when test runs have large output. Tests that have large output will no longer block the UI thread.
- Test output can now preserve tags so hyperlinks and stacktrace links are navigable even from the log files. These links are now keyboard friendly as well.
- Log files are created for a single test result when output is over 300 characters or if there are over 10 files attached to the test result. Log files can also now open in preview so it’s easier to manage your tabs. Log files and the Test Explorer support Ctrl PgUp/PgDn for navigating the cursor and Shift+Ctrl PgUp/PgDn for selection.
- The log file editor is now using the IVsTextView interface which means it will now be able to open very large text files. This should eliminate the need for users to
Copy All
truncated logs and open them in a separate editor such as Notepad. For MSTest, we now also include a single log file that aggregates all the output instead of only having individual log files for each data row.
Test tools
- You can now get cross-platform code coverage at the command-line on Ubuntu and Alpine with the dotnet cli. For users interested in getting code coverage on machines targeting those platforms you can now add the same code coverage collection commands that you'd normally use on windows. See more documentation for dotnet test.
- There is now an expand all button next to the collapse all button in the Test Explorer. This command has been available through keyboard shortcuts (Ctrl+A, Ctrl+ right arrow), but more feedback indicated adding a button was worth the additional UI. As always, thank you for letting us know what you think via https://developercommunity.visualstudio.com/.
- There are also some slight changes to how the Test Explorer shows "staleness." "Staleness" is the grayed out or "faded" test results that indicate the result was not from the latest test run. If a result is not a part of the most recent test run it will appear as stale. Previously, new test discoveries (or even old test results that were rediscovered) were also shown with solid icons. This caused some confusion on why some 'Not Run' tests were faded and why others were not. This change will reduce the complexity of staleness.
- With the persisted test results feature (added in version 16.2) you can see test results from the last test run even if you've closed and re-opened Visual Studio. This helps users remember where they left off and gives more context without requiring another test run. We also modified the behavior of persisted results so they will always appear stale. This better indicates that they were not from a test run that executed during the current Visual Studio session.
Web Tools
Dynamic configuration allows for configuration resources to be refreshed automatically using a middleware. App Configuration as a Connected Service can now automatically integrate dynamic configuration into your application. To use this connected service, click on Connected Services and add Azure App Configuration as a Service Dependency.
Windows Application Packaging Project "Dependencies Tree"
- Following up on last year’s work to enable NuGet package references in the Windows Application Packaging Project (WAP), we have enabled a new UI in the WAP’s Solution Explorer experience. The old experience didn’t show these package references or allow you to add NuGet packages via the UI.
- In the new experience, with the help of CPS and the .NET Project System, we have enabled a “Dependencies Tree" that continues to display project references via the “Applications” subtree, but also features a “Packages” subtree that will allow you to manage NuGet packages as well.
XAML Tooling Improvements (WPF & Xamarin.Forms)
Xamarin.Forms
In this release we’ve made two small improvements to XAML IntelliSense and XAML Hot Reload for Xamarin.Forms customers. Hot Reload “change only” will no longer report false errors for:
- Setters in VisualStateManager referencing properties without specifying type, e.g.
<Setter Property="BackgroundColor" Value="Red">
. - Merged ResourceDictionaries not wrapped into <ResourceDictionary.MergedDictionaries> element
Example:
<Application>
<Application.Resources>
<ResourceDictionary Source='Colors.xaml'/>
<Style TargetType='Label'> ... <Style>
</Application.Resources>
</Application>
XAML Sample Data
In this release we've further enhanced the XAML Designer's design-time data capability by introduced a new way to add generic sample data to your ItemsControls. This feature works for ListBox, ListView and DataGrid in WPF only.
- Sample Data can be enabled by setting
d:ItemSource='{d:SampleData}'
on your ListBox, ListView or DataGrid - This will populate your control in the designer only with a set of 5 items that match your DataTemplates and Binding Paths
- You can change how many items are generated using the
ItemCount
property, for example:d:ItemSource='{d:SampleData ItemCount=3}'
XAML Designer Quick Actions
A new lightbulb near the corner of a selected control in the XAML Designer can be used for quick access to commonly edited properties for that control.
Supported controls include:
- UWP: Border, Button, Canvas, CheckBox, ComboBox, Grid, HyperlinkButton, Image, ListBox, ListView, NavigationView, RadioButton, Slider, StackPanel, TextBlock, TextBox
- 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 the “New WPF XAML Designer for .NET Framework” preview feature enabled in the options dialog).
XAML Designer Quick Actions also has an extensibility model. For more information on creating your own actions, see the XAML Designer Extensibility GitHub
MVVM Tooling for XAML
In this release, we’ve introduced a lightbulb in the XAML Editor to create a view-model. This lightbulb is surfaced on the root element of the XAML document when we detect that an MVVM framework is being used in the project. The dialog allows for customization of the generated view-model namespace, folder and inherited base view-model.
The lightbulb also sets the generated view-model as the x:DataType(Xamarin.Forms) or d:DataContext(all other platforms) for the XAML document, allowing the user to further leverage the XAML Editor lightbulbs to generate bound properties and commands in view-models.
Service Fabric Tools
This feature introduces StartupServices.xml file in a Service Fabric Application design. This file hosts DefaultServices section of ApplicationManifest.xml. With this implementation, DefaultServices and Service definition-related parameters are moved from existing ApplicationManifest.xml to this new file called StartupServices.xml. This file is used in each functionalities (Build/Rebuild/F5/Ctrl+F5/Publish) in Visual Studio.
Top Issues Fixed in this Release
- Fixed an issue where C# developers invoking the Edit.SmartBreakline command would remove all the content in the accessor of Property.
- Fixed an issue where developers updating a codestyle setting would have the change apply in all Visual Studio instances instead of just inside the desired folder.
- The "Apply Code Changes" icon was showing whenever a natvie or merged project was opened. It will only be enabled once a developer starts debugging.
- Fixes breaking change in AudioUnitPropertyIDType
- Fixed an issue where developers using UWP unit test framework were unable to run tests on remote devices.
From Developer Community
Developer Community has a complete list of all of items shipping in this release.
Here are some of the top voted issues released in 16.10:
- .sqlproj not updating with changes
- Array access in compound literals initializers gives incorrect offsets
- Visual Studio 2019 Preview 2 standard c++ library modules issues/comments
- Visual Studio 2019 still wipes CMakeBuild directory each time I touch CMakeFiles.txt or CMakeSettings.json
- MSVC does not respect constexpr if within lambdas
- Noexcept default constructor
- #Pragma warning(push, )) does not disable all warnings for its scope if /Wall is set
- Constexpr-if and unused parameter
- Can't declare constexpr initializer_list
- C++latest confuses calling convention in template parameter
- Unable to check for updates to Visual Studio 2019
- Git compare window shows that everything has changed in the file when "Ignore trim whitespace" is unchecked.
- Spaces are inserted instead of tabs.
- Visual Studio Debugger Visualizers and BinaryFormatter in ASP.NET Core 5
- VS For Linux: Output files on remote machine are BUILDED INTO WRONG PLACE after 16.9 update.
- Some opened, pinned tabs are unpinned when restarting Visual Studio.
- Visual Studio 2019 Upgrade to 16.9.4 Causes Compile/Link Error
- GC collects during method call on c++/cli ref class
- EncodePointer/DecodePointer logical bug in CRT's Trace.cpp.
- Element has an invalid value of "EnableAllWarnings".
- E0144 being reported for valid code. (Intellisense error).
- "Invalid template argument, expected compile-time constant expression" after upgrading to Visual Studio v16.9.0
- Visual Studio 2019 still wipes CMakeBuild directory each time I touch CMakeFiles.txt or CMakeSettings.json. (https://developercommunity.visualstudio.com/t/sizeof-array-to-pointer-VC-weirdness/1396250)* [Sizeof array-to-pointer VC weirdness]
- Illegal character exception in Xamarin.Android afte Update to Version 16.9.0 of Visual Studio Community 2019
- Microsoft.VisualStudio.TestStorage.TestStoreIndexingException: Failed to add result for test
- VS For Linux: Output files on remote machine are BUILDED INTO WRONG PLACE after 16.9 update
- Some opened, pinned tabs are unpinned when restarting VS
- Regression 16.9.0: F7 aka "View Code" does not work from Xamarin Xaml File
- cl.exe takes over 5Gb ram to compile a fairly small piece of code.
- Enum values are not shown in Suggested Actions when the TypeConverter attribute is applied to a custom enum type
- Test Explorer fails to execute any tests under netcore3.1 and net5.0, but works with net461
- Bad code generated with /O2
- View Code in context menu is not working
- Fatal error C1001: Internal compiler error (compiler file 'D:\a01_work\4\s\src\vctools\Compiler\Utc\src\p2\main.c', line 213)
- Trying to remove live share from the VS Extension dialog fails in installer
- Msvc accepts invalid comparison between pointer and integer in template function
- Visual Studio stops responding while IntelliSense browsing.
- IntelliSense broken due to vcpkgsrv crash
- The list of vcpkgsrv.exe processes keeps growing.
- Visual Studio Merge Branches showing wrong branch name.
- Visual Studio 2019 Frequent error: "The application called an interface that was marshalled for a different thread".
- Starting tests from a code file (e.ge., using Ctrl+R, T) tries to load LiveShare components even when not installed.
- ClickOnce Publish for .NET Core 3.1 and .NET 5.0 may fail when project references a class library project with different Target Runtime.
- Fixed E1504: Internal error when using C++20 modules.
- C++ IntelliSense doesn't recognize "using enum".
- Visual Studio 2019 Enterprise RTM - .NET SDK-based projects (TargetFrameworkMoniker .NET 4.7.2).
- Fixed an error parsing the config output.
- "The 'VslsFileSystemProviderVSCorePackage' package did not load correctly" message displays when LiveShare is not installed.
- Building Xamarin iOS binding project no longer works in Visual Studio v16.9.
- Toolset 16.9 regression vcxproj producing static libraries: pdb is not copied to the output anymore.
- Connection to remote Linux machine uses incorrect destination path.
- Fixed a copy initialization: overload resolution issue.
- Incorrect IntelliSense squiggle with us of range-v3 library.
- Gold bar following an exception in DiagnosticDataSerializer.ReadDiagnosticDataArray.
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.