What's New for C++, .NET and More in Visual Studio 2019 v16.9 Preview 2
Microsoft shipped Visual Studio 2019 v16.9 Preview 2 while issuing New Year wishes toward the end of "this unpredictable year" that saw the milestone .NET 5 arrive incomplete from the original vision because of tricky problems and pandemic-caused delays but nevertheless saw Visual Studio versions churned out at a steady pace.
The last release sees improvements across a gamut of areas, including C++, .NET productivity, XAML tools (including Xamarin.Forms), web tools, the IDE installer and more.
Here's a high-level summary of what Microsoft highlighted in an announcement blog post and the release notes for Visual Studio 2019 v16.9 Preview 2:
- Continuing to improve the ASan on Windows (AddressSanitizer), Microsoft Visual Studio C++ (MSVC) can now determine the correct address sanitizer runtimes required for specific binaries being used in a project, something developers previously had to do for themselves.
- IntelliSense is improved for Android and embedded projects with the new ability of the IDE to use CMake variables from toolchain files to configure IntelliSense in CMake projects. Developers can specify custom IntelliSense options in the CMakeSetttings.json file.
- Visual Studio's Connection Manager now works with private keys, joining username/password authentication. Developers can now choose to use private key via the Elliptic Curve Digital Signature Algorithm (ECDsa) public key algorithm.
- The team updated the versions of LLVM and Clang shipped in the installer to v11, with more information to be found in the LLVM and Clang release notes.
Using directives are now automatically added when a developer copies/pastes types into a new file, saving a little time. This is enabled with a configuration setting to "Add missing using directives on paste" via the Tools menu.
- IntelliSense completion automatically inserts a semicolon commit character for object creation and method completion.
- Semantic colorization for C# 9.0 records is added. This also enabled from the Tools menu.
- Refactoring removes unnecessary discards. "We realize that in C#9, discards are unnecessary in particular pattern matching cases. Accordingly, you can now fade unnecessary discards with our code fix to remove them."
- Refactoring converts a verbatim and regular string to an interpolated string while preserving curly braces that were intended to be included in the output.
- A Visual Basic code fix deletes the
shared keyword when developers convert methods that are shared to a module.
Other various fixes and features include
- XAML Tools (WPF, WinUI, UWP and Xamarin.Forms): To enhance binding property generation in view-models, a new lightbulb icon appears to help developers quickly create a property in the view-model from a binding in the XAML.
- IntelliCode: Repeated edit suggestions are now provided directly within a IntelliSense completions list, allowing developers to view a preview of a suggested change, apply it at that location or ignore suggestions like these directly from the completion item. More information about IntelliCode suggestions is available here.
- .NET Web Tools: Developers can now deploy Steeltoe applications ("Create .NET microservices for modern cloud platforms") to Azure Spring Cloud ("Fully managed Spring Cloud service, jointly built and operated with VMware") using Visual Studio Publish. To enable this, projects must include the NuGet package Microsoft.Azure.SpringCloud.Client version 1.0.0-preview.1 or later.
Visual Studio Installer: This was improved in many ways in response to developer feedback:
- It no longer elevates on launch
- It now supports HDR displays
- It supports the Navigator screen reader
- Installer updates have been streamlined into the Visual Studio update
- It adds dark theme support
- Git Productivity: The keyboard shortcut Ctrl+Enter can be used to commit changes.
All of the above and much more is presented in greater detail in an announcement blog post and the Preview 2 release notes.
David Ramel is an editor and writer for Converge360.