对 ASP.NET Core 的 .NET 热重载支持
.NET 热重载会将代码更改(包括对样式表的更改)应用到正在运行的应用,而无需重启应用,也不会丢失应用状态。 所有 ASP.NET Core 6.0 和更高版本的项目都支持热重载。
通常,将重新运行更新的代码,以在下列情况下生效:
- 某些启动逻辑仅运行一次:
- 中间件,除非代码更新是委托给内联中间件进行的。
- 已配置的服务。
- 路由创建和配置,除非代码更新是委托给路由处理程序进行的(例如
OnInitialized
)。
- 在 Blazor 应用中,框架会自动触发 Razor 组件呈现。
- 在 MVC 和 Razor Pages 应用中,热重载自动触发浏览器刷新。
- 删除 RazorRazor属性不会导致重新呈现组件。 必须重启应用。
若要详细了解受支持的方案,请参阅支持的代码更改(C# 和 Visual Basic)。
Blazor WebAssembly
Blazor WebAssembly 热重载支持以下代码更改:
- 新类型。
- 嵌套类。
- 对方法主体的大多数更改,例如添加、删除和编辑变量、表达式和语句。
- 对 lambda 表达式和本地函数的主体进行的更改。
- 向现有类型添加静态和实例方法。
- 向现有类型添加静态和实例字段、事件和属性。
- 向现有方法添加静态 Lambda。
- 向先前已捕获
this
的现有方法添加可捕获this
的 Lambda。
请注意,在删除之前设置组件参数值的属性时,将释放并重新初始化该组件,以将删除的参数设置回其默认值。
Blazor WebAssembly 应用不支持以下代码更改:
Blazor WebAssembly 热重载支持以下代码更改:
- 新类型。
- 嵌套类。
- 对方法主体的大多数更改,例如添加、删除和编辑变量、表达式和语句。
- 对 lambda 表达式和本地函数的主体进行的更改。
- 向现有类型添加静态和实例方法。
- 向现有类型添加静态字段。
- 向现有方法添加静态 Lambda。
- 向先前已捕获
this
的现有方法添加可捕获this
的 Lambda。
请注意,在删除之前设置组件参数值的属性时,将释放并重新初始化该组件,以将删除的参数设置回其默认值。
Blazor WebAssembly 应用不支持以下代码更改:
Blazor WebAssembly 热重载支持以下代码更改:
- 对方法主体的大多数更改,例如添加、删除和编辑变量、表达式和语句。
- 对 lambda 表达式和本地函数的主体进行的更改。
Blazor WebAssembly 应用不支持以下代码更改:
.NET CLI
使用 dotnet watch
代码激活热重载:
dotnet watch
若要强制应用重新生成和重启,请使用命令行界面中的键盘组合 Ctrl+R。
进行不受支持的代码编辑时(称为强制编辑), 会询问你是否要重启应用:
- 是:重启应用。
- 否:不重启应用,并将应用保持在运行状态而不应用更改。
- 始终:在发生强制编辑时按需重启应用。
- 从不:不重启应用,也避免未来出现提示。
若要禁用热重载支持,请将 --no-hot-reload
选项传递给 dotnet watch
命令:
dotnet watch --no-hot-reload
禁用热重载
Properties/launchSettings.json
中的以下设置禁用热重载:
"hotReloadEnabled" : false
其他资源
有关详细信息,请参阅 Visual Studio 文档中的以下资源: