Edit

Share via


Configure Edit and Continue (C#, VB, C++)

You can disable or enable Hot Reload, previously called Edit and Continue, in the Visual Studio Options dialog box at design time. Hot Reload works only in debug builds. For more information, see Hot Reload.

Edit and Continue is a time-saving feature that enables you to make changes to your source code while your program is in break mode. When you resume execution of the program by choosing an execution command like Continue or Step, Edit and Continue automatically applies the code changes with some limitations. This allows you to make changes to your code during a debugging session, instead of having to stop, recompile your entire program, and restart the debugging session.

You can disable or enable Edit and Continue in the Visual Studio Options dialog box at design time. Edit and Continue works only in debug builds. For more information, see Edit and Continue.

For native C++, Edit and Continue requires using the /INCREMENTAL option. For more information about feature requirements in C++, see this blog post and Edit and Continue (C++).

Enable and configure Hot Reload

You can configure Hot Reload by selecting Settings from the Hot Reload drop-down button.

Screenshot of configuring Hot Reload.

Or, open Tools > Options > Debugging > .NET/C++ Hot Reload.

Note

If IntelliTrace is enabled and you collect both IntelliTrace events and call information, Edit and Continue is disabled. For more information, see IntelliTrace.

The settings for Hot Reload include:

  • Enable Hot Reload. Enables Hot Reload when starting with the debugger attached (F5).

  • Enable Hot Reload when starting without debugging. Enables Hot Reload when starting without the debugger attached (Ctrl+F5).

  • Apply Hot Reload on File Save. Applies code changes when you save the file.

  • Logging Verbosity. Filters amount of information displayed in the Hot Reload Output window.

Screenshot of settings for .NET Hot Reload.

For .NET Hot Reload, you also can control whether Hot Reload is available at the project level by modifying your .NET 6+ project's launchSetting.json file and setting hotReloadEnabled to false.

Example:

{ "profiles": { "Console": { "commandName": "Project", "hotReloadEnabled": false } } } 

For C++, you can set additional options by opening Tools > Options > Debugging > General. Make sure Enable Hot Reload is selected, and set the other options:

  • Apply changes on continue (Native only)

    If selected, Visual Studio automatically compiles and applies code changes when you continue debugging from a break state. Otherwise, you can choose to apply changes using Debug > Apply Code Changes.

  • Warn about stale code (Native only)

    If selected, gives warnings about stale code.

Enable or disable Edit and Continue

  1. If you're in a debugging session, stop debugging (Debug > Stop Debugging or Shift+F5).

  2. In Tools > Options > (or Debug > Options) > Debugging > General, select Edit and Continue in the right pane.

    Note

    If IntelliTrace is enabled and you collect both IntelliTrace events and call information, Edit and Continue is disabled. For more information, see IntelliTrace.

  3. For C++ code, make sure Enable Native Edit and Continue is selected, and set the other options:

    • Apply changes on continue (Native only)

      If selected, Visual Studio automatically compiles and applies code changes when you continue debugging from a break state. Otherwise, you can choose to apply changes using Debug > Apply Code Changes.

    • Warn about stale code (Native only)

      If selected, gives warnings about stale code.

  4. Select OK.

Configure Auto-restart

Hot Reload can automatically restart the app's process when an unsupported change (also called a rude edit) is made, instead of ending the entire debug session. To enable this, edit your project file to add the following property declaration.

<PropertyGroup> <HotReloadAutoRestart>true</HotReloadAutoRestart> </PropertyGroup> 

You can also set this property in a Directory.Build.props file. Auto-restart works for project types where a quick process restart is feasible (for example, some Aspire or web projects), so you can continue debugging with minimal interruption.

This is a process-based restart. For example, if you are debugging several projects, only the changed project(s), and any dependent project(s), are rebuilt and restarted.

Configure Hot Reload for Razor

By co-hosting the Razor compiler inside the Roslyn process, editing a .razor file during Hot Reload is much faster and more efficient. Co-hosting also improves the overall reliability when using Hot Reload.

To enable co-hosting, select Tools > Options, and then search for cohost. Select or deselect the setting Use Roslyn Cohost server for Razor (requires restart). If you enable this, it's recommended to restart Visual Studio. Co-hosting is enabled by default.

Stop code changes

While Hot Reload is in the process of applying code changes, you can stop the operation.

While Edit and Continue is in the process of applying code changes, you can stop the operation.

Caution

Stopping code changes in managed code can produce unexpected results. Applying changes to managed code is normally a quick process, so there is seldom a need to stop code changes in managed code.

To stop applying code changes:

  • Choose Stop Applying Code Changes from the Debug menu.

    This menu item is visible only when code changes are being applied.

    If you choose this option, none of the code changes are committed.