最新的.NET 熱過載介紹

MicrosoftReactor發表於2021-07-10

今天,我們很高興的向您介紹 Visual Studio 2019 版本 16.11(預覽版 1)和 .NET 6 中的 dotnet watch 命令列工具(預覽版 4)中的 .NET 熱過載體驗的可用性。在本博文,我們希望藉此機會向您介紹什麼是 .NET 熱過載、如何開始使用此功能、我們對未來計劃改進的願景是什麼,以及明確當前支援的編輯型別和語言。

什麼是 .NET 熱過載?

藉助熱過載,您現在可以在應用程式執行時修改應用程式託管的原始碼,而無需手動暫停或點選斷點。只需在應用執行時進行受支援的更改,在我們全新的 Visual Studio 體驗中,使用“應用程式碼更改”按鈕即可應用您的編輯。

熱過載適用於您現有和即將推出的許多專案型別,例如 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 中嘗試熱過載:

•下載並安裝 Visual Studio 2019 版本 16.11 預覽版 1

•開啟支援的專案型別,例如 WPF 應用

•通過 F5 連線偵錯程式啟動應用程式(確保在偵錯程式設定/除錯啟動配置檔案中禁用“啟用本機程式碼除錯”)

•開啟包含一些程式碼的 C# 程式碼檔案,這些程式碼可以通過正在執行的應用程式使用者介面(例如:按鈕的後臺程式碼或 ViewModel 的命令)或通過計時器每隔一段時間觸發的程式碼重新執行並更改程式碼

•使用 Visual Studio 工具欄中的新應用程式碼更改 (ALT-F10) 按鈕(在“繼續”按鈕旁邊)應用程式碼更改。請注意,使用 Visual Studio 時不需要儲存檔案,這使您可以靈活地快速更改程式碼並繼續前進。

如果您所做的更改得到支援,您的應用程式現在將在使用新邏輯執行時進行修補,並且您應該在下一次通過您的操作或類似觸發程式碼的計時器重新執行更新的程式碼時看到應用程式行為中的更改。

您還可以繼續使用其他偵錯程式功能,例如斷點、編輯並繼續、XAML 熱過載等。您今天使用的所有功能都應該與 .NET 熱過載完全並行工作。如果有什麼不適合您,請告訴我們!

命令列介面

要在使用 dotnet watch 啟動應用程式時從命令列嘗試熱過載:

  • 安裝 .NET 6 預覽版 4
  • 將現有的ASP.NET核心專案更新為目標.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 啟動他們的應用程式,並且仍然可以使用 Hot Reload 進行修補他們正在執行的應用程式
  • 減少不受支援的更改數量:在 Visual Studio 2022 和 .NET 6+ 的未來版本中,我們計劃跨多個團隊開展工作,以減少執行時不受支援的編輯數量
  • 優化框架以最好地與熱過載配合使用:在 .NET 6 中,我們正在研究如何改進某些框架以更好地支援熱過載。未來的示例將包括對 ASP.NET Core、.NET MAUI 和其他框架的改進,其中的調整和優化將使熱過載更改在更多情況下更有用。
    雖然以上是我們目前的計劃,但請注意,計劃可能會根據客戶的反饋和時間表而變化。

支援/不支援的更改和語言

無論您如何使用 .NET熱過載,請注意某些更改在執行時不受支援,並將以rude的編輯對話方塊提示您,並要求您重新啟動應用程式才能應用。我們仍在研究該功能和文件,以詳細說明支援哪些編輯。現在,首先回顧一下我們現有的“編輯並繼續"(EnC)等效功能列表。由於熱過載由 EnC 提供支援,這將為您提供一個很好的起點,以便更好地理解這一新功能。有關詳細資訊,請參閱:EnC 文件。

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

您的反饋很重要

在這個早期的預覽版本中,我們承認會有錯誤。有時,如果您嘗試應用更改,它可能會默默地失敗,或者您的應用程式可能會崩潰等。如果您確實遇到任何問題,請花點時間向我們報告問題,因為只有通過您的反饋,我們才能確保關鍵問題得到解決得到解決,未來的決策將根據您的輸入進行優先排序。

要聯絡我們,請使用 Visual Studio 反饋機制 或者在微軟Q&A論壇上提問任何有關開發的問題。

相關文章