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

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

“编辑并继续”是一种省时的功能,使你能够在程序处于中断模式时更改源代码。 当你通过选择一条类似“继续”或“单步执行”的执行命令继续执行程序时,“编辑并继续”会有限制地自动应用代码更改 。 这允许你在调试会话期间更改代码,而不是停止程序,重新编译整个程序,再重新启动调试会话。

设计时,可以在 Visual Studio“选项”对话框中禁用或启用“编辑并继续”。 “编辑并继续”仅在调试版本中起作用。 有关详细信息,请参阅编辑并继续

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

启用和配置热重载

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

Screenshot of configuring Hot Reload.

或者,打开“工具”>“选项”>“调试”>“.NET/C++ 热重载”。

注意

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

热重载的设置包括:

  • 调试时启用热重载和“编辑并继续”。 在附加调试器 (F5) 的情况下启动时启用热重载。

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

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

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

Screenshot of settings for .NET Hot Reload.

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

示例:

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

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

  • 继续应用更改(仅限本机)

    如果选择,则在从中断状态继续调试时,Visual Studio 会自动编译并应用代码更改。 否则,可以选择使用“调试”>“应用代码更改”来应用更改。

  • 警告过时代码(仅限本机)

    如果选择,则提供有关陈旧代码的警告。

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

  1. 如果正在进行调试会话,请停止调试(“调试”>“停止调试”或按 Shift+F5) 。

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

    注意

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

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

    • 继续应用更改(仅限本机)

      如果选择,则在从中断状态继续调试时,Visual Studio 会自动编译并应用代码更改。 否则,可以选择使用“调试”>“应用代码更改”来应用更改。

    • 警告过时代码(仅限本机)

      如果选择,则提供有关陈旧代码的警告。

  4. 选择“确定”

停止代码更改

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

当“编辑并继续”处于应用代码更改的过程中时,您可以停止该操作。

注意

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

要停止应用代码更改:

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

    该菜单项仅在应用代码更改时才可见。

    如果选择了改选项,就不会进行任何代码更改。