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?
C++
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_unique, make_shared, emplace and emplace_back. These provide completion based on the specified type parameter.
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.
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.
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.
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.
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!
I just downloaded vs 2019 community and try to generate Controller/views(with strong model) after creating EDM with (EF6 or EF5). but I keep getting following error Package EntityFramework 6.1.3 is not found in the following primary sources(s) C:\Program Files (x86)\Microsoft SDKs\NuGetPackages' First under this source directory i see versions 6.0.0, 6.1.3, 6.2.0. Able to install only 6.2.0 or 5.0.0 while creating the model (could not install any of the entity framework model...
Good morning,
we are very interested in new developments in VisualStudio 2019,
but before making a purchase, it would be possible to know when and if the new version “VisualStudio 2021” will be released
Thanks
How can I “upgrade” my existing VS2019 16.8.6 to this preview? Is it possible? Or should I do a fresh install?
Will it finally have normal copy paste behavior?
I was waiting for the de-clutter of multiple targets for so long, thanks!
However, can you also do the same for `Ctrl+F12` – Go To Implementation?
So that navigating through the codebase is fast too?
We have a lot of business logic in .NET 4.0 which reads a message from an IBM MQ, does some processing, and writes to the database all in one transaction (coordinated by MSDTC). Is there some way to do this in .NET 5? As far as I know, .NET 5 does not support distributed transactions.
We have no support to interact with MSDTC on .NET Core and there are no plans to add it.
It doesn't look like they have bothered to implement it like a few other Enterprise features in .Net 5 so I wouldn't hold your breath for it.
https://github.com/dotnet/runtime/issues/715
There does seem to be a proof of concept workaround https://github.com/dotnet/runtime/issues/715#issuecomment-748934621 though I would personally be nervous implementing it.
FWIW 16.9-preview3 is night and day difference for .razor file development. If you are a Blazor developer struggling with 16.8 (OutOfMemoryExceptions, etc), give 16.9 a whirl. Additionally, it looks like 16.9-preview4 will have even better improvements:
https://github.com/dotnet/aspnetcore-tooling/commit/2ef66171463133de75c3f5b3300e73abe8b50c13
Thank you for all your efforts out there, team!
Thank You Microsoft for Visual Studio 2019.
Any news about Python 3.8 support in Visual Studio. It would be great to use Visual Studio as a Python IDE
Python 3.8 is not planned for Visual Studio 2019 and is planned to be supported in the next major release of Visual Studio but we don’t have details to share on that release yet.
You can use vscode to write python code
How do you install? Link in this page just creates a new window to the same page for me!
Neill,
Thank you for this good catch. It is working now.
-Jacqueline
The install link is only working after login
When you say “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.”, what conditions make this happen?
I’m running the new preview and looking at my Analyzers list, I still just get the basic generator name, with no generated content beneath it…
Hi Mark! This is a new C# compiler feature that lets C# developers inspect user code and generate new C# source files that can be added to a compilation. You may not notice it because of the following open bugs:
1. If you have a multi-targeting project, it only appears under one which you can track here.
2. In certain cases where you name your project in certain ways, it won't appear which you can...