配置“编辑并继续”(C#、VB、C++)

可以在设计时从 Visual Studio 工具>选项 菜单中禁用或启用“热重载”,以前称为“编辑并继续”。 “热重载”仅适用于调试版本。 有关详细信息,请参阅热重载

对于本机C++,热重载需要使用 /INCREMENTAL 此选项。 有关C++中的功能要求的详细信息,请参阅此 博客文章编辑并继续(C++)

注意

如果启用了 IntelliTrace 并收集 IntelliTrace 事件和调用信息,则禁用热重载。 有关详细信息,请参阅 IntelliTrace

启用和配置热重载

可以通过从“热重载”下拉菜单中选择“设置”来配置热重载。

配置热重载的屏幕截图。

或者,打开 “工具>选项 ”窗格并调整“ 所有设置>调试>.NET/C++热重载 ”部分中的选项。 可以使用以下选项:

  • 启用热重载:在应用程序与附加的调试器(F5)一起运行时,将热重载功能与 .NET 和 C++ 代码配合使用。

  • 在继续执行时自动应用更改(仅限原生):Visual Studio 会自动编译并应用在从中断状态继续进程时所做的任何未完成的代码更改。 如果未选择,可以选择使用“调试”菜单下的“应用代码更改”项来应用更改。

  • 针对过时代码发出警告(仅限本地环境):接收过时代码的警告。

  • 在未调试时启用:当应用在没有附加调试器的情况下运行时启用热重载(Ctrl + F5)。

  • 在保存文件时应用:保存文件时应用更改。

  • 日志记录详细程度:启用热重载时设置日志记录级别: 最小详细诊断

Visual Studio 中 .NET C++热重载的设置的屏幕截图。

或者,打开 “工具>选项 ”对话框,并在 “调试>.NET/C++热重载 ”部分中调整选项。 可以使用以下选项:

  • 启用热重载:从附加调试器开始时启用热重载(F5)。

  • 在未调试的情况下启动时启用热重载:在没有附加调试器的情况下启动时启用热重载(Ctrl+F5)。

  • 在文件保存时应用热重载:保存文件时自动应用代码更改。

  • 日志记录详细程度:筛选热重载输出窗口中显示的信息量。

.NET 热重载设置的屏幕截图。

对于C++,可以通过打开工具>选项>调试>常规来设置额外选项。 确保已选择“启用热重载”,并设置其他选项:

  • 在继续(仅限本机)上应用更改:Visual Studio 会自动编译,并应用在从中断状态继续该过程时所做的任何未完成的代码更改。 如果未选择,可以选择使用“调试”菜单下的“应用代码更改”项来应用更改。

  • 针对过时代码发出警告(仅限本地环境):接收过时代码的警告。

对于 .NET 热重载,还可以通过修改 .NET 6+ 项目的 launchSetting.json 文件和将 hotReloadEnabled 设置为 false来控制热重载是否在项目级别可用。

例:

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

配置自动重启

当进行不受支持的更改(也称为粗鲁编辑)时,热重载可以自动重启应用的进程,而不是结束整个调试会话。 若要启用此功能,请编辑项目文件以添加以下属性声明。

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

还可以在 Directory.Build.props 文件中设置此属性。 自动重启适用于可以快速重启进程的项目类型(例如某些 Aspire 或 web 项目),因此你可以在几乎没有中断的情况下继续调试。

这是一个基于进程的重启。 例如,如果要调试多个项目,则只会重新生成和重启已更改的项目和任何依赖项目。

为 Razor 配置热重载

通过在 Roslyn 进程中共同托管 Razor 编译器,在热重载期间编辑 .razor 文件更快、更高效。 使用热重载时,Cohosting 还提高了整体可靠性。

若要启用共同托管,请选择 “工具>选项”,然后搜索 cohost。 选择或取消选择设置“使用 Roslyn Cohost 服务器用于 Razor(需重新启动)”。 如果启用此选项,请重启 Visual Studio。 默认情况下启用共同托管。

停止代码更改

当热重载处于应用代码更改的过程中时,你可以停止该操作。

谨慎

停止托管代码中的代码更改可能会产生意外的结果。 对托管代码应用更改通常是一个快速的过程,因此很少需要停止托管代码中的代码更改。

要停止应用代码更改,请执行以下步骤:

  • 从“调试”菜单中选择“停止应用代码更改”。

    仅当应用代码更改时,此菜单项才可见。

    如果选择此选项,则不会提交任何代码更改。