ASP.NET Core 6.0對熱過載的支援

Eric zhou發表於2022-03-23

.NET 熱過載技術支援將程式碼更改(包括對樣式表的更改)實時應用到正在執行的程式中,不需要重啟應用,也不會丟失應用狀態。

一、整體介紹

目前 ASP.NET Core 6.0 專案都支援熱過載。在以下情況下支援應用的熱過載:

      1. 僅執行一次的應用啟動邏輯程式碼

    • 中介軟體,除非程式碼更新是委託給內聯中介軟體進行的。
    • 已配置的服務。
    • 路由建立和配置,除非程式碼更新是委託給路由處理程式進行的(例如 OnInitialized)。

      2. Blazer應用中,框架將自動觸發Blazor元件渲染

      3. 在 MVC 和 Razor Pages 應用中,熱過載自動觸發瀏覽器重新整理

      4. 刪除 Razor元件引數屬性不會導致重新呈現元件。 必須重啟應用。

Blazor WebAssembly 熱過載支援具有以下條件:

  1. 熱過載對方法主體的大多數更改做出反應,例如新增、刪除和編輯變數、表示式和語句。
  2. 還支援對 lambda 表示式和本地函式的主體進行更改。
  3. 不支援新增新的 lambda 或本地函式、新增新的運算子或關鍵字表示式。
  4. 不支援更改方法引數的名稱。
  5. 不支援方法主體之外的更改。
  6. 在 Visual Studio 2022 GA (17.0) 中,只有在沒有偵錯程式的情況下執行時,才支援熱過載。

.NET CLI

   使用 dotnet watch 程式碼啟用熱過載:

dotnet watch

若要強制應用重新生成和重啟,請使用命令列介面中的鍵盤組合Ctrl+R

進行不受支援的程式碼編輯時(稱為強制編輯), 會詢問你是否要重啟應用:

  • 是:重啟應用。
  • 否:不重啟應用,並將應用保持在執行狀態而不應用更改。
  • 始終:在發生強制編輯時按需重啟應用。
  • 從不:不重啟應用,也避免未來出現提示。

若要禁用熱過載支援,請將 --no-hot-reload 選項傳遞給 dotnet watch 命令:

dotnet watch --no-hot-reload

二、程式碼示例

 本文中我們使用一個Blazor應用示例一下Hot reload

 1. VS Code新建Blazor Server project 

dotnet new blazorserver

 

 2. dotnet watch 執行

F:\Tranning\NET6\Blazor>dotnet watch
watch : Hot reload enabled. For a list of supported edits, see https://aka.ms/dotnet/hot-reload. Press "Ctrl + R" to restart.
watch : Building...
  正在確定要還原的專案…
  所有專案均是最新的,無法還原。
  Blazor -> F:\Tranning\NET6\Blazor\bin\Debug\net6.0\Blazor.dll
watch : Started
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: https://localhost:7256
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5249
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
      Content root path: F:\Tranning\NET6\Blazor\

       首頁顯示的內容:

 

 

 3. 修改index.razor中的程式碼

       介面顯示也自動跟著重新整理了

 

 

 

 以上是ASP.NET Core 6.0對熱過載的支援的一些介紹。

 

周國慶

2022/03/23

 

相關文章