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