.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

猜你喜欢

转载自blog.csdn.net/mzl87/article/details/121404774