Microsoft Ships Visual Studio 2019 v16.9 Servicing Baseline Release
Microsoft is urging enterprises and professional coders to standardize on the new Visual Studio 2019 v16.9, a servicing baseline release that's guaranteed to receive official support for an extended period.
The company announced VS 2019 v16.9 -- after three previews -- at its big Ignite conference that mostly focuses on IT pros along with some dev stuff. The new GA release comes with new improvements for C++ development, .NET productivity, Git tooling, web tooling and XAML productivity, coming from several of the company's various dev teams including: C++, .NET Productivity, Address Sanitizer, XAML Tooling and IntelliCode.
With no earth-shaking new functionality highlighted by Microsoft, the release is mostly a hodgepodge of tweaks and enhancements that is perhaps of most interest to organizations and pros who live in Enterprise or Professional editions of Visual Studio every day because of its servicing.
As noted, because it's a long-term servicing baseline release (the fourth in the current v16 cycle), v16.9 will be supported with fixes and security updates for one year after the release of the next servicing baseline, which at this point is unknown. That release rhythm means VS 2019 v16.7, the the most recent previous servicing baseline release, will receive support for another year, until April 2022.
The first preview of v16.10 was also announced today, March 2, the start of the three-day Ignite online conference.
As far as new functionality, today's announcement post by Jacqueline Widdis, release manager, Visual Studio Release Team, highlights several items of note in the C++ space, including the Address Sanitizer, which has moved out of the experimental stage to reach GA status. As we reported in coverage of a v16.9 preview, 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 when compiling from the command line. "All you need to do is set /fsanitize:address and our tools will work out the rest of the details," said Widdis, who also explained a couple other tweaks for the Address Sanitizer.
She also noted improvements to C++ conformance (implementing the More Constexpr Containers proposals) and C++ IntelliSense (many improvements to stability and functionality and even some new functionality, spurred by developer feedback).
In the .NET productivity department, items of interest include:
- Using directives will now automatically be added when copying and pasting types to a new file
- Inline type hints that insert adornments for variables with inferred types and lambda parameter types
- IntelliSense completion that automatically inserts a semicolon as a commit character for object creation and method completion
Speaking of IntelliSense, it's AI-assisted cousin, IntelliCode is now easier to use with "frictionless" code completion suggestions, as explained here.
"You can find IntelliCode suggestions right in your IntelliSense completion list," Widdis said. "From there, you are also able to find and apply the same change in other locations. This new functionality in the completion list should blend naturally into your editing flow. The edit is added to the completion list in a non-intrusive way. This makes edits easy to find and perform repetitious actions."
The very active XAML tools space also received much attention to its components for Windows Presentation Foundation (WPF), WinUI, Universal Windows Platform (UWP) and Xamarin.Forms.
For example, the much-requested and long-awaited "hot reload" functionality that brought Xamarin.Forms up to par with competing frameworks has been improved. For the MVVM (model–view–viewmodel) software architectural pattern, the XAML code editor now features lightbulb icons to specify the design DataContext in XAML as an available view-model. "Setting this enhances IntelliSense, such as the ability to create new ViewModel properties, Go To Definition and completions right from the XAML code editor."
For Xamarin.Forms, a preview feature that allowed for "changes only" XAML hot reload has been moved to GA status and will be the default setting for Xamarin.Forms 5.0 and later releases. "The new 'changes only' XAML Hot Reload mechanism makes it possible to update your running app's UI in real-time and see those changes reflected immediately without requiring the full page to be reloaded, and without having to save the file," Widdis said. "'Changes only' Hot Reload also supports the Live Visual Tree, so you can see the runtime UI hierarchy for your app and easily navigate to your XAML source code."
In the "fun" department, the new release features functionality we covered in a preview: the ability to customize audio test cues that indicate when a test run finishes. Existing Windows 10 sound files can be used or even a developer's own sound files (which immediately led to audio test cues that sound suspiciously like flatulence).
The new release also furthers previous work on improving GitHub Actions tooling, used to automate software continuous integration and deployment (CI/CD) flows. That previous work in VS 2019 extended the Publish experiences, specifically introducing developers to repeatable, predictable CI/CD environments. Now added to that are various items including:
- A redesigned summary page
- An added new status section
- Commit and push the workflow with just one click
- Ability to recognize more project types
- Help for generating CI/CD workflows for building, testing, deploying ASP.NET web projects to Azure App Service, Azure Functions and Azure API Management
Widdis also discussed improved call stack handling of stack overlow scenarios, specifically the new capability to filter out redundant frames from the call stack when a StackOverflowException stops the debugger. "It is now possible to see the base of the stack where an infinite recursion originated. This should make it easier to investigate these types of bugs."
Also featured are experimental Razor Editor updates including:
- HTML and C# semantic colorization
- Renames of C# symbols reflected in closed Razor files
- More C# light bulbs in Razor files
- Further improvements to mixed content formatting in Razor files
Finally, new .NET Core memory dump analyzers help fix deadlocks such as when two threads are each waiting for the other to release a lock. "This conundrum caused us to add a new Auto Analyzer to inspect the threads in a memory dump to determine if an unresponsive application is due to one of these deadlocks," Widdis said. "A blocked finalizer can lead to abnormal memory growth which. This, in turn, can lead to system instability due to out of memory exceptions. Our new Analyzer inspects the .NET Core Finalizer queue to help you identify potential blocking objects in a memory dump."
Many more information about all of the above and many other items of note are explained in much greater detail in the release notes.
Speaking of release notes, here is how they summarize Visual Studio 2019 v16.10 Preview 1:
- .NET Productivity:
- 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
- Switch to V2 of API for Azure AD provisioning
- Azure App Configuration as a Connected Service now supports dynamic configuration
- 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.
Debugging & diagnostics
- Diagnostic Analysis of memory dumps now includes Managed Linux core dumps.
Visual Studio 2019 v16.9 is available here while Visual Studio 2019 v16.10 Preview 1 is available here.
David Ramel is an editor and writer for Converge360.