.NET 6新特性试用 | 热重载
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET 6新特性试用 | 热重载相关的知识,希望对你有一定的参考价值。
前言
在以前的开发模式下,我们修改代码后必须重新编译、重新运行才能看到效果。
而热重载提供了这样一种特性,它允许你在项目正在运行时修改代码,并将代码更改立即应用于正在运行的应用程序上。
热重载的目的是尽可能节省编辑之间的应用重启次数,从而使你通过减少等待应用重新生成、重启、重新导航到你在应用中的上一个位置等操作的时间来提高工作效率。
在.NET 6发布之前还有个小插曲,热重载差点从dotnet CLI中被移除。具体可以看这篇文章:https://devblogs.microsoft.com/dotnet/update-on-net-hot-reload-progress-and-visual-studio-2022-highlights/
下面,让我们尝试使用热重载来编写和调试正在运行的代码。
Demo
假设有下列代码,每秒向控制台输出一行文本:
int i = 0;
while (true)
Console.WriteLine("My IO " + i++);
await Task.Delay(1000);
1.使用VS2022
使用F5启动附加了调试器的应用程序,然后修改代码,最后单击“火焰”图标(“热重载”按钮)或按 ALT+F10 应用代码更改,又可以看到效果:
2.使用dotnet CLI
在控制台窗口使用dotnet watch
启动应用程序,然后修改代码,最后只需保存文件,等待一会就可以看到效果:
可以看到,热重载并不是完全实时的。
结论
将Visual Studio 2022与.NET 6应用一起使用时,可以支持大多数应用类型的热重载。
下表显示了哪些应用程序类型在附加调试器(F5)和不附加调试器(Ctrl+F5)的情况下支持热重载,以及是否需要.NET 6才能获得最低支持(即 F5, Ctrl+F5支持始终需要.NET 6),还显示了支持该功能的Visual Studio的最低版本:
Application type | .NET 6 required (F5) | F5 | Ctrl+F5 |
---|---|---|---|
ASP.NET code behind | No | 16.11 | 17.0 |
ASP.NET Razor (Blazor Server and ASP.NET Core) | Yes | 17.0 | 17.0 |
ASP.NET Razor (Blazor WASM) | Yes | No | 17.0 |
WPF | No | 16.11 | 17.0 |
WinUI3 | No | 16.11 | No |
WinForms | No | 16.11 | 17.0 |
Console | No | 16.11 | 17.0 |
XAML .NET MAUI WinUI | Yes | 17.1 Preview 1 | No |
XAML .NET MAUI android | Yes | 17.1 Preview 1 | No |
XAML .NET MAUI ios | Yes | 17.1 Preview 1 | No |
XAML + Blazor .NET MAUI WinUI | Yes | 17.1 Preview 1 | No |
XAML + Blazor .NET MAUI Android | Yes | 17.1 Preview 1 | No |
XAML + Blazor .NET MAUI iOS | Yes | 17.1 Preview 1 | No |
如果你觉得这篇文章对你有所启发,请关注我的个人公众号”My IO“
以上是关于.NET 6新特性试用 | 热重载的主要内容,如果未能解决你的问题,请参考以下文章