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

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

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

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

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

启用和配置热重载

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

配置热重载的屏幕截图。

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

注意

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

热重载的设置包括:

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

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

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

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

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

对于 .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. 选择“确定”。

停止代码更改

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

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

谨慎

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

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

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

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

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