在设计时,你可以在 Visual Studio“选项”对话框中禁用或启用热重载(以前称为“编辑并继续”)。 “热重载”仅适用于调试版本。 有关详细信息,请参阅热重载。
编辑并继续是一项节省时间的功能,使你可以在程序处于中断模式时更改源代码。 通过选择 继续 或 步骤等执行命令恢复程序执行时,编辑并继续会自动应用代码更改,但存在一些限制。 这样,就可以在调试会话期间更改代码,而无需停止、重新编译整个程序并重启调试会话。
可以在设计时在 Visual Studio 选项 对话框中禁用或启用“编辑并继续”。 “编辑并继续”仅在调试版本中起作用。 有关详细信息,请参阅编辑并继续。
对于本机 C++,“编辑并继续”需要使用 选项。/INCREMENTAL 有关C++中的功能要求的详细信息,请参阅此 博客文章 和 编辑并继续(C++)。
启用和配置热重载
可以通过从“热重载”菜单按钮中选择“设置”来配置热重载。
或者,打开“工具”“选项”>“调试”“.NET/C++ 热重载”。>>
注意
如果启用了 IntelliTrace 并收集 IntelliTrace 事件和调用信息,则禁用“编辑并继续”。 有关详细信息,请参阅 IntelliTrace。
热重载的设置包括:
启用热重载。 在附加调试器 (F5) 的情况下启动时启用热重载。
在不调试的情况下启动时启用热重载。 在未附加调试器的情况下启动时启用热重载(Ctrl+F5)。
保存文件时应用热重载。 保存文件时应用代码更改。
日志记录详细程度。 筛选“热重载输出”窗口中显示的信息量。
对于 .NET 热重载,还可以通过修改 .NET 6+ 项目的 launchSetting.json 文件和将 hotReloadEnabled 设置为 false来控制热重载是否在项目级别可用。
例:
{
"profiles": {
"Console": {
"commandName": "Project",
"hotReloadEnabled": false
}
}
}
对于C++,可以通过打开 工具>选项>调试>常规来设置其他选项。 确保已选择“启用热重载”,并设置其他选项:
继续时应用更改(仅限本机)
如果选择,Visual Studio 会在继续从中断状态继续调试时自动编译并应用代码更改。 否则,可以选择使用“调试”“应用代码更改”来应用更改。>
针对陈旧代码发出警告(仅限本机)
如果选择,则提供有关过时代码的警告。
启用或禁用“编辑并继续”
如果处于调试会话中,请停止调试(调试>停止调试 或 Shift+F5)。
在“工具”“选项”>(或“调试”“选项”)>“调试”“常规”中,选择右窗格中的“编辑并继续”。>>>
注意
如果启用了 IntelliTrace 并收集 IntelliTrace 事件和调用信息,则禁用“编辑并继续”。 有关详细信息,请参阅 IntelliTrace。
对于 C++ 代码,确保选择“启用本机‘编辑并继续’”,并设置其他选项:
继续时应用更改(仅限本机)
如果选择,Visual Studio 会在继续从中断状态继续调试时自动编译并应用代码更改。 否则,可以选择使用“调试”“应用代码更改”来应用更改。>
针对陈旧代码发出警告(仅限本机)
如果选择,则提供有关过时代码的警告。
选择“确定”。
配置自动重启
当进行不受支持的更改(也称为粗鲁编辑)时,热重载可以自动重启应用的进程,而不是结束整个调试会话。 若要启用此功能,请编辑项目文件以添加以下属性声明。
<PropertyGroup>
<HotReloadAutoRestart>true</HotReloadAutoRestart>
</PropertyGroup>
还可以在 Directory.Build.props 文件中设置此属性。 自动重启适用于可以快速重启进程的项目类型(例如某些 Aspire 或 web 项目),因此你可以在几乎没有中断的情况下继续调试。
这是一个基于进程的重启。 例如,如果要调试多个项目,则只会重新生成和重启已更改的项目和任何依赖项目。
为 Razor 配置热重载
通过在 Roslyn 进程中共同托管 Razor 编译器,在热重载期间编辑 .razor 文件要更快、更高效。 在使用热重载时,协同托管也提高了整体可靠性。
若要启用共同托管,请选择 “工具>选项”,然后搜索 cohost。 选择或取消选择设置“使用 Roslyn Cohost 服务器用于 Razor(需重新启动)”。 如果启用此功能,建议重启 Visual Studio。 默认情况下启用共同托管。
停止代码更改
当热重载处于应用代码更改的过程中时,你可以停止该操作。
虽然“编辑并继续”正在应用代码更改,但可以停止该操作。
谨慎
停止托管代码中的代码更改可能会产生意外的结果。 对托管代码应用更改通常是一个快速的过程,因此很少需要停止托管代码中的代码更改。
要停止应用代码更改,请执行以下步骤:
从“调试”菜单中选择“停止应用代码更改”。
仅当应用代码更改时,此菜单项才可见。
如果选择此选项,则不会提交任何代码更改。