.NET 6新特性试用 | 热重载
前言
在以前的開發(fā)模式下,我們修改代碼后必須重新編譯、重新運(yùn)行才能看到效果。
而熱重載提供了這樣一種特性,它允許你在項(xiàng)目正在運(yùn)行時(shí)修改代碼,并將代碼更改立即應(yīng)用于正在運(yùn)行的應(yīng)用程序上。
熱重載的目的是盡可能節(jié)省編輯之間的應(yīng)用重啟次數(shù),從而使你通過減少等待應(yīng)用重新生成、重啟、重新導(dǎo)航到你在應(yīng)用中的上一個(gè)位置等操作的時(shí)間來提高工作效率。
在.NET 6發(fā)布之前還有個(gè)小插曲,熱重載差點(diǎn)從dotnet CLI中被移除。具體可以看這篇文章:https://devblogs.microsoft.com/dotnet/update-on-net-hot-reload-progress-and-visual-studio-2022-highlights/?
下面,讓我們嘗試使用熱重載來編寫和調(diào)試正在運(yùn)行的代碼。
Demo
假設(shè)有下列代碼,每秒向控制臺(tái)輸出一行文本:
int?i?=?0; while?(true) {Console.WriteLine("My?IO?"?+?i++);await?Task.Delay(1000); }1.使用VS2022
使用F5啟動(dòng)附加了調(diào)試器的應(yīng)用程序,然后修改代碼,最后單擊“火焰”圖標(biāo)(“熱重載”按鈕)或按 ALT+F10 應(yīng)用代碼更改,又可以看到效果:?
2.使用dotnet CLI
在控制臺(tái)窗口使用dotnet watch啟動(dòng)應(yīng)用程序,然后修改代碼,最后只需保存文件,等待一會(huì)就可以看到效果:?
可以看到,熱重載并不是完全實(shí)時(shí)的。
結(jié)論
將Visual Studio 2022與.NET 6應(yīng)用一起使用時(shí),可以支持大多數(shù)應(yīng)用類型的熱重載。
下表顯示了哪些應(yīng)用程序類型在附加調(diào)試器(F5)和不附加調(diào)試器(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 |
如果你覺得這篇文章對(duì)你有所啟發(fā),請(qǐng)關(guān)注我的個(gè)人公眾號(hào)”My IO“
總結(jié)
以上是生活随笔為你收集整理的.NET 6新特性试用 | 热重载的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何通过 .NETCore 获取 Lin
- 下一篇: asp.net ajax控件工具集 Au