News

Hot Reload Now Works with C++ Apps, with Blazor WebAssembly Support On Tap

Microsoft is touting a raft of improvements to .NET Hot Reload functionality introduced in Visual Studio 2022 Preview 2.

Hot Reload, a much-requested and long-awaited feature for editing code at runtime, was introduced as a new experience in May in Visual Studio 2019 v16.11 Preview 1 and through the dotnet watch command-line tooling in .NET 6 (Preview 4).

More recently, with the release of Visual Studio 2022 Preview 2, Hot Reload was extended to native C++ apps along with managed .NET apps. "With Hot Reload, you can edit C++ or .NET projects while your application is running," Microsoft said. "In many cases, you can apply those code changes without pausing your app."

The new functionality was explained in a July 29 blog post in which the company dives deeper into the brand-new Hot Reload experience.

"With Hot Reload our goal is to save you as many app restarts between edits as possible, making you more productive by reducing the time you spend building/restarting as you continue to build your app. We try to achieve this goal by making it possible for you to edit your applications code files and, in many cases, apply those code changes immediately without having to do things such as pause the apps execution or restarting," said Dmitry Lyalin, senior program manager, .NET Multi-platform App UI (MAUI), XAML Tooling & Hot Reload.

"This brand-new Hot Reload technology for code files also continues to work side-by-side with XAML Hot Reload, making both XAML and .NET Hot Reload available for those applications that use XAML for UI. Hot Reload also works alongside existing debugger capabilities you might be used to such as breakpoints, 'edit and continue '(EnC) for modify running code at a breakpoint and other features."

Highlights of the new experience include:

  • Initial support for editing Razor pages in ASP.NET web applications
  • Support for Hot Reloading C++ apps during the debugger experience
  • The ability to use .NET Hot Reload without the debugger when launching an app with CTRL-F5
  • Support for more types of edits

While Hot Reload works with Blazor Server and Razor pages, it doesn't yet work with the client-side Blazor component, Blazor WebAssembly (or Blazor Wasm), though such support is on tap along with support for .NET MAUI apps (the evolution of Xamarin.Forms that adds desktop app development).

A separate blog post is devoted entirely to Hot Reload support for C++ applications. There, it's powered by Edit and Continue (see documentation), a new way of editing code while debugging that lets developers apply code changes without stopping at a breakpoint or restarting an app. While it only works with MSBuild C++ projects right now, an upcoming preview will introduce support for CMake projects.

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

Other things that C++ developers should note include:

  • Developers can edit any codebase compiled by MSVC toolset, as long as they use the /ZI compiler switch
  • Developers can edit both exe and DLL projects
  • Hot Reload injects changes into the app dynamically and won't trigger a full rebuild of the app
  • Hot Reload functions the same as Edit & Continue but does not require break mode debugging -- developers no longer need to set a break point
  • If developers need the program stopped before making changes, they should use Edit and Continue; otherwise, Hot Reload will provide the best experience
  • C++ Hot Reload only works when using the Visual Studio debugger, and while .NET Hot Reload is coming to CTRL-F5 and CLI experiences, this is not currently planned for C++ apps

Going forward, Microsoft plans:

  • Support for Blazor web apps in more scenarios, such as support for Blazor Wasm and hybrid .NET MAUI desktop apps
  • Support for editing CSS files during Hot Reload, enabling developers to both change code-behind and the CSS files of an app during the same session with CSS changes reflecting in real-time
  • Supporting .NET MAUI iOS and Android scenarios for Hot Reloading mobile apps through the debugger (F5), with Microsoft noting that supporting non-debugger scenarios such as CTRL-F5 and CLI are currently below the cutline for what the team can deliver in .NET 6 timeframe
  • Additional improvements to the user experience in Visual Studio 2022, this includes an improved rude edit dialog, a new settings panel, an option to enable hot reload to apply changes "on file save" and more
  • Microsoft is seeking developer feedback on C++ Hot Reload via a survey.

    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