.NET Hot Reload熱重載


參考文檔:

1.Introducing the .NET Hot Reload experience for editing code at runtime

https://devblogs.microsoft.com/dotnet/introducing-net-hot-reload/

2..NET Hot Reload Support via CLI

https://devblogs.microsoft.com/dotnet/net-hot-reload-support-via-cli/

3.Update on .NET Hot Reload progress and Visual Studio 2022 Highlights

https://devblogs.microsoft.com/dotnet/update-on-net-hot-reload-progress-and-visual-studio-2022-highlights/

主要介紹在 Visual Studio 2019 版本 16.11(預覽版 1)和dotnet watch.NET 6 中命令行工具(預覽版 4)中的 .NET 熱重載體驗的可用性

一、什么是 .NET 熱重載?

借助熱重載,您現在可以在應用程序運行時修改應用程序托管的源代碼,而無需手動暫停或點擊斷點。只需在應用運行時進行受支持的更改,在我們全新的 Visual Studio 體驗中,使用“應用代碼更改”按鈕即可應用您的編輯。

Hot Reload 適用於您現有和即將推出的許多項目類型,例如 WPF、Windows 窗體、.NET MAUI 預覽、ASP.NET Core 應用程序代碼隱藏、控制台應用程序、WinUI 3(需要托管調試器)等等。這種支持非常廣泛,具有使用任何由 .NET Framework 或 CoreCLR 運行時提供支持的項目的核心經驗。

通過熱重載,我們的目標是無論您喜歡以何種方式啟動應用程序,都可以提供這種體驗。在今天的版本中,您現在可以通過完全集成的 Visual Studio 調試器體驗或dotnet watch命令行工具來使用這種體驗,更多選項將在以后的版本中提供。

二、入門

要開始使用,您可以選擇使用 Visual Studio 的最新預覽版或我們的 .NET 6 Preview 4,說明如下。

視覺工作室:

要在使用調試器時在 Visual Studio 中嘗試熱重載:

  • 下載並安裝 Visual Studio 2019 版本 16.11 預覽版 1
  • 打開支持的項目類型,例如 WPF 應用程序
  • 通過 F5 連接調試器啟動應用程序(確保在調試器設置/調試啟動配置文件中禁用“啟用本機代碼調試”)
  • 打開包含一些代碼的 C# 代碼文件,這些代碼可以通過正在運行的應用程序用戶界面(例如:按鈕或 ViewModel 的命令的代碼隱藏)或通過計時器每隔一段時間觸發的代碼重新執行並更改代碼
  • 使用apply code changesVisual Studio 工具欄中的新(ALT-F10) 按鈕(Continue按鈕旁邊)應用代碼更改請注意,使用 Visual Studio 時不需要保存文件,這使您可以靈活地快速更改代碼並繼續前進。

如果您所做的更改得到支持,您的應用程序現在將在使用您的新邏輯運行時進行修補,您應該會在下次通過您的操作或計時器等重新執行更新后的代碼時看到應用程序行為的更改觸發代碼。

您還可以繼續使用其他調試器功能,例如斷點、編輯並繼續、XAML 熱重載等。您今天習慣的一切都應該與 .NET 熱重載完全並行工作。如果有什么不適合您,請告訴我們!

命令行界面

要在使用 dotnet watch 啟動應用程序時從命令行嘗試熱重載:

  • 安裝 .NET 6 預覽版 4
  • 更新現有的 ASP.NET Core 項目以面向 .NET 6
  • 將“hotReloadProfile”:“aspnetcore”屬性添加到launchSettings.json 中的應用啟動配置文件。

Properties/launchSettings.json 示例:

{
  "profiles": {
    "dotnet": {
      "commandName": "Project",
      "hotReloadProfile": "aspnetcore"
    }
  }
}
  • 使用運行項目dotnet watch並查看輸出,因為它應該表明啟用了熱重載
  • 對您的應用程序管理的源代碼進行受支持的代碼更改並保存文件以應用

就像使用 Visual Studio 體驗一樣,您現在應該應用新邏輯,下次重新執行更新的代碼時,您應該會看到應用行為的變化。

您還可以通過修改“blazorwasm”熱重載配置文件並按照上述類似步驟將這種方法用於您的 Blazor WebAssembly 項目。您甚至可以使用 Windows 窗體或由 CoreCLR 提供支持的其他類型的項目來嘗試它,只需手動在 Properties 文件夾下添加一個名為 launchSettings.json 的文件,其中包含上述示例內容。

這種體驗仍在開發中,我們正在跟蹤未來的改進,這將使使用 dotnet watch 更容易地在沒有 launchSettings.json 文件的情況下熱重載所有類型的 .NET Core 應用程序,但這是當前版本中的一個限制。

三、Visual Studio 2022 和 .NET 6 中的最佳

在今天的發布中,這只是我們對 .NET 開發人員的熱重載的完整願景的預覽。雖然在早期的 .NET 6 預覽版和 Visual Studio 2019 中提供了一些功能,但為了發揮此功能的全部功能,我們將 .NET 6(以及 .NET 的未來版本)和 Visual Studio 2022 作為框架集和將擁有最完整和優化的體驗的工具。

為了讓您大致了解我們計划在未來的預覽版和最終版本中提供哪些類型的功能,以下是一些示例:

  • .NET 多平台應用程序 UI (.NET MAUI):借助 .NET 6 Preview 4,構建 .NET MAUI 應用程序的開發人員現在可以將 .NET Hot Reload 用於面向 WinUI 3 的項目。在未來的版本中,我們將提供 .NET Hot Reload 支持到 iOS、Android 和 Mac Catalyst 方案。
  • Razor 頁面:在未來的版本中,將支持熱重載和編輯並繼續 (EnC) 來編輯 Razor 以針對面向 .NET 6 或更高版本的網站或 Blazor 應用程序
  • Visual Studio 中不需要調試器:在 Visual Studio 2022 的未來版本中,我們正在努力添加對使用熱重載的支持,而無需調試器,這意味着開發人員將能夠使用 CTRL-F5 啟動他們的應用程序,並且仍然使用熱重載來修補他們正在運行的應用程序
  • 減少不受支持的更改數量:在 Visual Studio 2022 和 .NET 6+ 的未來版本中,我們計划跨多個團隊開展工作,以減少運行時不受支持的編輯數量
  • 優化框架以最適合熱重載:在 .NET 6 中,我們正在研究如何改進某些框架以更好地支持熱重載。未來的例子將包括對 ASP.NET Core、.NET MAUI 和其他框架的改進,其中的調整和優化將使熱重載更改在更多情況下更有用。

雖然以上是我們當前的計划,但請注意,計划可能會根據客戶的反饋和時間表而變化。

四、支持/不支持的更改和語言

無論您如何使用 .NET Hot Reload,請注意某些更改在運行時不受支持,並且會通過rude edit對話框提示您並要求您重新啟動應用程序才能應用。我們仍在研究該功能和文檔,以詳細說明支持哪些編輯。現在,首先查看我們現有的編輯並繼續 (EnC) 等效功能列表由於 Hot Reload 由 EnC 提供支持,這將為您提供一個很好的起點,以便更好地理解這一新功能。有關詳細信息,請參閱:EnC 文檔

此外,雖然上面的例子特別提到了 C#,但在 Visual Studio 的調試器下運行時,Visual Basic 也支持各種情況。.NET 6 目前不支持 F#,但我們計划根據客戶反饋在未來版本中提供支持。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM