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

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

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

注意

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

编辑并继续是一项节省时间的功能,使你可以在程序处于中断模式时更改源代码。 通过选择 继续步骤等执行命令恢复程序执行时,编辑并继续会自动应用代码更改,但存在一些限制。 这样,就可以在调试会话期间更改代码,而无需停止、重新编译整个程序并重启调试会话。

可以在设计时在 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
    }
  }
}

启用或禁用“编辑并继续”

  1. 如果处于调试会话中,请停止调试(调试>停止调试Shift+F5)。

  2. 在“工具”“选项”>(或“调试”“选项”)>“调试”“常规”中,选择右窗格中的“编辑并继续”。>>>

    注意

    如果启用了 IntelliTrace 并收集 IntelliTrace 事件和调用信息,则禁用“编辑并继续”。 有关详细信息,请参阅 IntelliTrace

  3. 对于 C++ 代码,确保选择“启用本机‘编辑并继续’”,并设置其他选项:

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

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

  4. 选择“确定”。

配置自动重启

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

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

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

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

为 Razor 配置热重载

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

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

停止代码更改

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

虽然“编辑并继续”正在应用代码更改,但可以停止该操作。

谨慎

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

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

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

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

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