.NET 6新特性试用 | 热重载
前言
在以前的開發(fā)模式下,我們修改代碼后必須重新編譯、重新運行才能看到效果。
而熱重載提供了這樣一種特性,它允許你在項目正在運行時修改代碼,并將代碼更改立即應用于正在運行的應用程序上。
熱重載的目的是盡可能節(jié)省編輯之間的應用重啟次數(shù),從而使你通過減少等待應用重新生成、重啟、重新導航到你在應用中的上一個位置等操作的時間來提高工作效率。
在.NET 6發(fā)布之前還有個小插曲,熱重載差點從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應用一起使用時,可以支持大多數(shù)應用類型的熱重載。
下表顯示了哪些應用程序類型在附加調試器(F5)和不附加調試器(Ctrl+F5)的情況下支持熱重載,以及是否需要.NET 6才能獲得最低支持(即 F5, Ctrl+F5支持始終需要.NET 6),還顯示了支持該功能的Visual Studio的最低版本:
| 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 |
如果你覺得這篇文章對你有所啟發(fā),請關注我的個人公眾號”My IO“
總結
以上是生活随笔為你收集整理的.NET 6新特性试用 | 热重载的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何通过 .NETCore 获取 Lin
- 下一篇: .NET 6新特性试用 | Contro