Visual Studio 2019 v16.9 Preview 3 is Available Today

Jacqueline Widdis

First of all, Happy New Year! We hope everyone had a safe and enjoyable time ushering in 2021. As a team, we are looking ahead with strong optimism for what is coming this year. While we work on planning our next series of releases, we are extremely excited for what we hope to deliver to the developer community as a whole. Closer to the heart, we cannot wait to add more value to those of you who turn to Visual Studio as a primary productivity tool.

Today the Visual Studio team welcomes Visual Studio 2019 v16.9 Preview 3 as our first preview release of 2021. We hope the new additions to C++, .NET Productivity, Test Explorer, Accessibility, and XAML Tools will please you. As you download our latest version, we hope this summary of features will build anticipation to try each of them.

Meanwhile, we encourage you submit any feedback or suggestions to our thriving online Developer Community.

What’s New in this Release?


Opening this section, we are excited to mention additional command line tools. First, you can now target the LLVM version of the OPenMP runtime with the command line switch /openmp:llvm. Included in this item is added support for the lastprivate clause on #pragma omp sections and unsigned index variables in parallel for loops. Please keep in mind this switch is currently only available for the AMD64 target, and we do still consider this experimental.

Next, Visual Studio CMake projects now have first class support for remote Windows development. This includes configuring a CMake project to target Windows ARM64. Subsequently, you can also deploy and debug the project on a remote Windows machine from Visual Studio 2019.

Speaking of CMake, we have shipped binaries for Ninja and CMake with Visual Studio for quite some time. As promised we continue to upgrade them so you can make the most of recent versions of those tools. In this release, we have upgraded Ninja to v1.10 and CMake to v3.19.

Finally, we have marked many of the lock and guard types in our Standard Template Library (STL) implementation as nodiscard. This gives you better compiler errors if you use them incorrectly. You can take a look at the details in this pull request on GitHub.

IntelliSense in C++

Based on your feedback, we have made many improvements to the stability and functionality of providing imported modules and header units in IntelliSense. We appreciate every report, so keep them coming! While we were working on stability, we also added extra functionality. Consequently, we can highlight Go-to-definition on module imports, indexing support for export {…}, and more accurate module reference for modules with identical names.

As implementation of a top-voted Developer Community suggestion ticket, we added completion for make_uniquemake_sharedemplace and emplace_back. These provide completion based on the specified type parameter.

Additional IntelliSense Completion in Visual Studio 2019 v16.9 Preview 3
Additional IntelliSense Completion in Visual Studio 2019 v16.9 Preview 3

We have also added improved language compliance of C++ by implementing some standards defects reports.

Address Sanitizer

After announcing ASan support for Windows last year, we have been continuously working on the experience and implementation.

The IDE integration for ASan-reported exceptions(vcasan.lib) now handles the complete collection of reportable ASan exceptions. Like other ASan libraries, this specific library, vcasan, is found automatically when you pass the /fsanitize=address. The compiler and linker will also suggest emitting debug information if they detect you’re building with ASan but not receiving debug information. As we approach our Visual Studio 2019 v16.9 generally available release, more details will be provided in the full ASan documentation.

As a final point, we have made some extensions and fixes to the Windows support.

Use Audio Cues with Test Explorer

We love to implement user suggestions, and this is one of them! Test Explorer can now play a customizable sound when a test run completes. You can select two different sounds. The first one is for indicating the test run succeeded with passing test results. The second chosen sound would indicate a test with at least one failure. What makes this even more exciting is the added accessibility of the Test Explorer by adding an audio cue for developers with visual impairments.

When you first use this feature, the sound selection is the default Windows 10 sound dialog which has many preset sounds. Rest assured, you can use any audio file from your computer! We had some fun with this, and hope you do too.

The Group By menu has also been made friendlier with screen readers as we have changed it to more concise wording and more efficient word order.

High Contrast Improvement

Speaking of accessibility, as part of the Visual Studio team’s commitment to such experiences, the IDE has the capability to detect if you have High Contrast settings enabled in Windows. If those options are enabled, Visual Studio 2019 will honor those settings.

Again, this suggestion has come from user advice that the Visual Studio themes should meet their needs better than the ones provided by the operating system. We have added a checkbox to give you control over whether you want Visual Studio to use Windows High Contrast mode.

To activate this feature, go to Tools > Options. Note the new option Use Windows High Contrast Settings. When this option is checked, the default setting will match the detected Windows High Contrast settings. If this box remains unchecked, you are free to choose any of the themes included with Visual Studio 2019. This theme choice will continue to persist even if Windows reports that a High Contrast color theme is in use.

.NET Productivity

The .NET Productivity team has been busy adding additional IntelliSense improvements. This release, we can highlight completion for preprocessor symbols. To see this in action, start typing the #if directive to see the new completion options available for symbols currently defined in scope.

IntelliSense Completion for Preprocessor Symbols in Visual Studio 2019 v16.9 Preview 3
IntelliSense Completion for Preprocessor Symbols in Visual Studio 2019 v16.9 Preview 3

You may notice a new change in Solution Explorer as it will now display the new .NET 5.0 Source Generators underneath the Analyzer node. This will allow you to easily navigate and view the generated code.

.NET 5.0 Source Generators in Visual Studio 2019 v16.9 Preview 3
.NET 5.0 Source Generators in Visual Studio 2019 v16.9 Preview 3


Go To All will no longer display duplicate results across netcoreapp3.1 and netcoreapp2.0 as well as results for partial types that exist to wrap another nested type. This will help declutter the results so you can easily find and navigate through your code. The results also now include the filename for partial symbols.

Go To All Easier Code Navigation in Visual Studio 2019 v16.9 Preview 3
Go To All Easier Code Navigation in Visual Studio 2019 v16.9 Preview 3

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

As a quick highlight to end out this post, we have expanded MVVM Tooling for XAML. The functionality is the introduction of lightbulbs to generate commands and new view-models.

MVVM Tooling Support in Visual Studio 2019 v16.9 Preview 3
MVVM Tooling Support in Visual Studio 2019 v16.9 Preview 3

Happy New Year & Happy Developing

We sincerely hope these new features and additional stability give you reason to smile this new year. Thank you for your constant engagement in our virtual Developer Community. This is the best place to submit feedback and suggestions as we have teams looking out for new and up-voted issues.

Wrapping up this post, we wish you the happiest in 2021 and hope it is your most productive development year yet!