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