Software Update: Microsoft Visual Studio 2019 16.9.0

Microsoft has released version 16.9 of Visual Studio 2019. This popular programming development environment has useful options to make programming easier in Visual C++, Visual Basic, C#, F#, Python and R, among others. The complete list of the changes in the 2019 edition can be found in the accompanying release notes. In version 16.9, Microsoft has made the following changes and improvements:


  • Address Sanitizer:
    • Our address sanitizer support on Windows is now out of experimental and has hit general availability.
    • Expanded RtlAllocateHeap support, fixed a compatibility issue with RtlCreateHeap and RtlAllocateHeap interceptors when creating executable memory pools.
    • Added support for the legacy GlobalAlloc and LocalAlloc family of memory functions. You can enable these interceptors with ASAN_OPTIONS=windows_hook_legacy_allocators=true.
    • Updated error messages for shadow memory interleaving and interception failure to make problems and resolutions explicit.
    • The IDE integration can now handle the complete collection of exceptions which ASan can report.
    • The compiler and linker will suggest emitting debug information if they detect you’re building with ASan but not emitting debug information
  • You can now target the LLVM version of the OpenMP runtime with the new CL switch /openmp:llvm. This adds support for the lastprivate clause on #pragma omp sections and unsigned index variables in parallel for loops. The /openmp:llvm switch is currently only available for the amd64 target and is still experimental.
  • Visual Studio CMake projects now have first class support for remote Windows development. This includes configuring a CMake project to target Windows ARM64, deploying the project to a remote Windows machine, and debugging the project on a remote Windows machine from Visual Studio.
  • The version of Ninja shipped with Visual Studio on Windows has been updated to version 1.10. Please see the Ninja 1.10 release notes for details on what is included.
  • The version of CMake shipped with Visual Studio has been updated to version 3.19. Please see the CMake 3.19 release notes for details on what is included.
  • Marked many lock/guard types in the STL as nodiscard:
  • IntelliSense:
  • MSVC now determines the correct address sanitizer runtimes required for your binaries. Your Visual Studio project will automatically get the new changes. When using address sanitizer on the command line, you now only need to pass /fsanitize=address to the compiler.
  • Visual Studio’s Connection Manager now supports private keys using the ECDSA public key algorithm.
  • Updated the versions of LLVM and Clang shipped in our installer to v11. Read the release notes for LLVM and clan for more information.
  • Visual Studio will now use CMake variables from toolchain files to configure IntelliSense. This will provide a better experience for embedded and Android development.
  • Implementation of the More Constexpr Containers proposal, which allows destructors and new expressions to be constexpr. This paves the way for utilities like constexpr std::vector and std::string.
  • Extended support for C++20 modules IntelliSense, including Go To Definition, Go To Module, and member completion.
  • Abbreviated function templates are now supported in the MSVC compiler.


  • There is now support for Edge Chromium based WebView2 JavaScript/TypeScript debugging for applications such as WPF, WinForms and WinUI 3 projects. This can be enabled by selecting the JavaScript debugger from the Project Properties dialog box. Details on how to get started to can be found here


  • Added a new Auto Analyzer that inspects threads for deadlocks.
  • Added a new Auto Analyzer that inspects the .NET Core Finalizer queue and detects potentially blocking objects.
  • Visual Studio now filters out redundant repeating frames from the call stack when the debugger stops on a StackOverflow Exception. It is now possible to see the base of the stack where an infinite recursion originated, which hopefully makes it easier to investigate these kinds of bugs.


  • Added new dynamic instrumentation scenario that is faster (doesn’t require VSInstr) and allows .NET Core applications to be instrumented without needing PDBs.

.NET Productivity

  • There is now IntelliSense completion for preprocessor symbols.
  • Solution Explorer now displays the new .NET 5.0 Source Generators.
  • Go To All won’t display duplicate results across netcoreapp3.1 and netcoreapp2.0.
  • Quick Info now displays compiler warning IDs or numbers for suppressions.
  • Using directives will now automatically get added when copying and pasting types to a new file.
  • IntelliSense completion will now automatically insert a semicolon as a commit character for object creation and method completion.
  • Semantic colorization for C# 9.0 records.
  • Refactoring that removes unnecessary discards.
  • Refactoring that converts a verbatim and regular string to an interpolated string preserving curly braces that were intended to go in the output.
  • Code fix in Visual Basic that removes the shared keyword when you convert methods that are shared to a module.
  • A refactoring that suggests using new(…) in non-contentious scenarios
  • A code fix that removes redundant equality expressions for both C# and Visual Basic
  • The .NET Code Style (IDE) analyzers can now be enforced on build
  • The Syntax Visualizer shows the current foreground color for enhanced colors
  • A new tooltip when hovering over the diagnostic ID for pragma warnings
  • When you type the return key from within a comment the new line is now automatically commented out
  • Inline parameter name hints enhancements
  • .NET Core Debugging with WSL 2

Test Explorer audio cues and accessibility updates

  • You can now configure audio cues with the Test Explorer, the Group By menu is more accessible for screen readers, and viewing long test output is easier with clickable links opening log files directly.

Experimental Razor Editor Updates

  • HTML and C# semantic colorization
  • Renames of C# symbols reflected in closed Razor files
  • More C# lightbulbs in Razor files
  • Further improvements to mixed content formatting in Razor files

.NET Web Tools

Web Tools

  • Enhanced .NET support for Azure App Configuration as a Connected Service
  • Manage your application’s configuration settings and feature flags by integrating Azure App Configuration as a Connected Service

XAML Tools (WPF, WinUI, UWP & Xamarin.Forms) MVVM Tooling

  • Improved MVVM Support: In this release, we have introduced Lightbulbs in the XAML Editor to generate properties and commands in available view-models. We have also added Lightbulbs to help set the design DataContext in XAML to available view-models to improve binding IntelliSense.

Xamarin.Forms In this release we’ve made multiple improvements for Xamarin.Forms developers:

  • XAML Hot Reload “changes only” mode is now the default for Xamarin.Forms 5.x projects: Starting with Visual Studio 16.9 XAML Hot Reload “changes only” mode is now the default XAML Hot Reload experience for projects targeting Xamarin.Forms 5. x or higher. Projects targeting 4.x will automatically fallback to “full page” XAML Hot Reload as “changes only” is only compatible with Xamarin.Forms 5.x or newer. If you are using Xamarin.Forms 5.x and wish to use the old “full page” Hot Reload mode for some reason, you can do so by going to Hot Reload settings under Tools > Options > Debugging > Hot Reload.
  • XAML Hot Reload status updates in output window: Xamarin.Forms customers using XAML Hot Reload can now see more details on what is happening with the XAML Hot Reload pipeline using the output window. To get started, open the output window with View > Output and select Xamarin Hot Reload under Show output from at the top of the window.
  • Xamarin.Forms + UWP – resolved System.ExecutionEngineException: Starting with the release of Visual Studio 2019 version 16.8 we inadvertently introduced a runtime exception that would trigger System.ExecutionEngineException errors when developers would be debugging Xamarin.Forms app that target Windows (UWP). Starting with this release (16.9 Preview 4) and in combination with an update to Microsoft.NETCore.UniversalWindowsPlatform NuGet (version 6.2.12+) this issue should now be resolved. Note: This fix is ​​not only for Visual Studio 2019 version 16.9. Updating your projects to use the new NuGet package should resolve this issue for Visual Studio version 16.9 as well.

Git Productivity

  • We’ve refreshed the Preview Feature flag for the new Git UX with a built-in Give Feedback link that directs you straight to the product team.
  • Team Explorer Home and Connect pages show detailed content to transition to the new Git UX.
  • Support for custom remotes in branch push notifications.
  • Double click a branch in the Git Repository window to checkout.
  • Commit changes with the keyboard shortcut Ctrl+Enter.
  • Push all tags from the Git Changes window.

Visual Studio Installer

  • The Visual Studio Installer no longer elevates on launch
  • The Visual Studio Installer now supports HDR displays
  • The Visual Studio Installer supports the Navigator screen reader
  • Installer updates have been streamlined into the Visual Studio update
  • The Visual Studio Installer adds dark theme support

Version number 16.9.0
Release status Final
Operating systems Windows 7, Windows Server 2012, Windows 8, Windows 10, Windows Server 2016, Windows Server 2019
Website Microsoft
License type Paid