News

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.

10-Year Visual Studio Support Lifecycle
[Click on image for larger view.] 10-Year Visual Studio Support Lifecycle (source: Microsoft).

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
    Adding Missing Using Directives in Animated Action
    [Click on image for larger, animated GIF view.] Adding Missing Using Directives in Animated Action (source: Microsoft).
  • 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.

XAML Hot Reload in Action
[Click on image for larger, animated GIF view.] XAML Hot Reload in Action (source: Microsoft).

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."

On the JavaScript/TypeScript front, the release supports Edge Chromium-based WebView2 JavaScript/TypeScript debugging for WPF, WinForms and WinUI 3 projects. This can be enabled by selecting the JavaScript debugger from the Project Properties dialog box. More on that is available here.

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
Checking for Deadlocks
[Click on image for larger view.] Checking for Deadlocks (source: Microsoft).

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."

New Memory Dump Analyzers in Visual Studio 2019 v16.9
[Click on image for larger view.] New Memory Dump Analyzers in Visual Studio 2019 v16.9 (source: Microsoft).

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
  • Web Tools:
    • Switch to V2 of API for Azure AD provisioning
    • Azure App Configuration as a Connected Service now supports dynamic configuration
  • Git Productivity:
    • 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.

About the Author

David Ramel is an editor and writer at Converge 360.

comments powered by Disqus

Featured

  • Compare New GitHub Copilot Free Plan for Visual Studio/VS Code to Paid Plans

    The free plan restricts the number of completions, chat requests and access to AI models, being suitable for occasional users and small projects.

  • Diving Deep into .NET MAUI

    Ever since someone figured out that fiddling bits results in source code, developers have sought one codebase for all types of apps on all platforms, with Microsoft's latest attempt to further that effort being .NET MAUI.

  • Copilot AI Boosts Abound in New VS Code v1.96

    Microsoft improved on its new "Copilot Edit" functionality in the latest release of Visual Studio Code, v1.96, its open-source based code editor that has become the most popular in the world according to many surveys.

  • AdaBoost Regression Using C#

    Dr. James McCaffrey from Microsoft Research presents a complete end-to-end demonstration of the AdaBoost.R2 algorithm for regression problems (where the goal is to predict a single numeric value). The implementation follows the original source research paper closely, so you can use it as a guide for customization for specific scenarios.

  • Versioning and Documenting ASP.NET Core Services

    Building an API with ASP.NET Core is only half the job. If your API is going to live more than one release cycle, you're going to need to version it. If you have other people building clients for it, you're going to need to document it.

Subscribe on YouTube