1. 程式人生 > 程式設計 >在執行時編輯程式碼的 .NET 熱過載的操作方法

在執行時編輯程式碼的 .NET 熱過載的操作方法

今天,我們很高興向你介紹 Viwww.cppcns.comsual Studio 2019 中 16.11(預覽版1)中的 .NET 熱過載(通過 .NET 6(預覽版4)中的 dotnet watch 命令列工具)。在這篇文章的其餘部分,我們會介紹什麼是 .NET 熱過載,您如何開始使用這個特性,我們對未來計劃改進的設想,以及目前支援哪種編輯和語言的明確性。

  今天,我們很高興向你介紹 Visual Studio 2019 中 16.11(預覽版1)中的 .NET 熱過載(通過 .NET 6(預覽版4)中的 dotnet watch 命令列工具)。在這篇文章的其餘部分,我們會介紹什麼是 .NET 熱過載,您如何開始使用這個特性,我們對未來計劃改進的設想,以及目前支援哪種編輯和語言的明確性。

什麼是 .NET 熱過載

  使用熱過載,您現在可以在應用程式執行時修改應用程式託管的原始碼,而不需要手動暫停或命中斷點。只需在應用程式執行時進行受支援的更改,並在我們新的 VisualStudio 體驗中使用“apply code changes”按鈕應用您的編輯。

在執行時編輯程式碼的 .NET 熱過載的操作方法

  熱過載支援已經存在的和即將到來的專案型別,例如 WPF、Windows Forms、.NET MAUI 預覽版、ASP.NET Core、Console 、WinUI 3 等等。這種支援非常廣泛,支援與任何由 .NET Framework 或 CoreCLR 執行時驅動的專案。(This support is very broad with the core experience working with any project that is powered by .NET Framework or CoreCLR runtimes.)

  通過熱過載,我們的目標是讓這種體驗可用,無論您喜歡如何啟動您的應用程式。通過今天的釋出,您現在可以通過完全整合的 Visual Studio 偵錯程式體驗或 dotnet watch 命令列工具使用此體驗,稍後版本將有更多的選項。

開始

  你可以選擇使用 Visual Studio 的最新預覽版,也可以選擇使用 .NET 6 預覽4,介紹如下。

Visual Studio

  在 Visual Studio 中使用偵錯程式時嘗試熱過載:

  • 下載並安裝 Visual Studio 2019 16.11 預覽版1。
  • 開啟支援的專案型別,例如 WPF 應用程式。
  • 通過 F5 啟動附加偵錯程式的應用程式(確保在偵錯程式配置中“enable native code debugging”為禁用)。
  • 開啟一個 C# 程式碼檔案,其中有些程式碼可以通過正在執行的應用程式的使用者介面重新執行(例如:一個按鈕的邏輯程式碼或一個 ViewModel 的 command),或者通過 Timer 間隔觸發一些東西,然後更改程式碼。
  • 使用 Visual Studio 中的工具欄新的“應用代碼更改(ALT-F10)按鈕”(Continue 按鈕旁邊)來應用程式碼更改。請注意,在使用 Visual Studio 時並不需要儲存檔案,這給了您快速更改程式碼並繼續進行除錯的靈活性。

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

  您還可以繼續使用其他偵錯程式特性,如斷點、編輯並繼續、XAML 熱過載等。您現在所習慣的一切都應該與 .NET 熱過載完全並行。如果有些東西對你不起作用,請讓http://www.cppcns.com我們知道!

CLI

  使用 dotnet watch 從命令列啟動應用時使用熱過載:

  • 安裝 .NET 6 預覽4。
  • 更新你的 ASP.NET Core 專案到 .NET 6。
  • launchSettings.on 中新增 “hotReloadProfile”: “aspnetcore” 屬性。
{
  "profiles": {
    "dotnet": {
      "commandName": "Project","hotReloadProfile": "aspnetcore"
    }
  }
}
  • 使用 dotnet watch 執行專案並檢視輸出,它應該顯示啟用了熱過載。
  • 對您的應用程式託管程式碼進行熱過載支援的程式碼更改,並儲存檔案以應用。

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

  您也可以通過這種方式修改“blazorwasm”熱過載配置檔案,在您的 Blazor WebAssembly 專案中使用上面類似的步驟。你甚至可以在 WindowsForms 或其他由 CoreCLR 支援的專案中嘗試它,只需手動在 Properties 資料夾下新增一個帶有上面示例內容的名為 launchSettings.json 的檔案。

  這一功能仍在開發中,我們正在跟蹤未來的改進,將更容易使用 dotnet watch 來熱過載所有型別的 .NET Core 應用程式,而無需 launchSettings.json 檔案,這在當前版本中的還是一個限制。

將在 Visual Studio 2022 和 .NET 6 中的實現最佳

  今天的釋出只是我們為 .NET 開發人員提供的熱過載的預覽版。在 .NET 6 預覽版和 Visual Studio 2019 中,只有部分功能可用。該特性的全功能會在 .NET 6(和未來版本的 .NET)以及 Visual Studio 2022 中作為框架和工具集提供最完整功能和最佳經驗。

  為了讓你大致瞭解我們計劃在未來的預覽版和最終版本中提供哪些特性,這裡有一些例子:

  • .NET Multi-platform App UI (.NET MAUI):藉助 .NET 6 Preview 4,開發人員構建 .NET MAUI 應用程式時,現在可以使用 .NET 熱過載來實現針對 WinUI 3 的專案。在未來的版本中,我們將在 iOS、 和 Mac Catalyst 場景中引入 .NET 熱過載支援。
  • Razor Pages:在未來的版本中,將支援熱過載和編輯並繼續 (Edit and Continue,EnC),用於為 .NET 6 或更高版本的或 Blazor 應用編輯 Razor。
  • 無需偵錯程式:在 Visual Studio 2022 的未來版本中,我們正在努力新增對使用熱過載而不需要偵錯程式的支援,這意味著開發者將能夠使用 CTRL-F5 啟動他們的應用程式,並且仍然使用熱ZSiClru過載來修補他們正在執行的應用程序。
  • 減少不受支援的更改:在 Visual Studio 2022 和 .NET 6+ 的未來版本中,我們計劃跨多個團隊進行工作,以減少執行時不受支援的編輯的數量。
  • 優化框架以更好地支援熱過載:在.NET 6 中,我們正在研究如何改進某些框架以更好地支援熱重新載入。將包括對 ASP.NET Core, .NET MAUI 和其他框架的調整和優化將使熱過載在更多的情況下更有用。

  以上是我們目前的計劃,請注意,計劃可能會根據客戶的反饋和時間表進行更改。

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

  無論你如何使用 .NET 熱過載,請注意,有些更改在執行時是不支援的,會提示你一個粗糙的編輯對話方塊,並要求你重新啟動應用程式。我們仍致力於該特性和文件,以詳細說明支援哪些編輯。現在,首先檢視現有的編輯並繼續(EnC)列表等效功能。由於熱過載是由 EnC 驅動的,這將為你更好地理解這個新特性提供一個很好的起點。具體請參見:EnC 文件。

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

到此這篇關於在執行時編輯程式碼的 .NET 熱過載的操作方法的文章就介紹到這了,更多相關.NET 熱過載內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!