.NET 6 的熱重載功能 dotnet watch 介紹

.NET 6 的 CLI 中有一個指令叫做 dotnet watch,能夠讓我們熱重載(Hot Reload)應用程式,方便開發。

.NET 熱重載(Hot Reload) 功能可以讓我們在調整程式碼時只要一存檔就自動將程式碼修改的內容應用到正在執行的應用程式中,不用重新啟動應用程式,也不會失去目前應用程式執行的狀態。
不過也有部分修改的內容會不支援熱重載,一定要重新啟動才可以套用變更,例如安裝 NuGet 套件。

一般執行應用程式使用的指令是 dotnet run,而 要使用熱重載功能要使用 dotnet watch 指令來啟動,只要進到專案 > 解決方案 下的路徑執行即可。
    
dotnet watch
    

有修改時會顯示變更的檔案,並熱重載變更的內容

快速重新執行

上面有說到並不是所有內容都支援熱重載,每當遇到這種情況時就需要 Ctrl + C 停止程式,再使用方向鍵上切換為最後執行的指令,再按下 Enter 執行 dotnet watch 。有點麻煩,有沒有更加快速的方式?

其實可以直接按下 Ctrl + R,就會停止並重新執行 dotnet watch 了!

不要顯示 dotnet watch 特殊字元符號

從上面的截圖可以發現 dotnet watch 在執行時會有利用特殊字元顯示的圖示(🔥, 🔧, 🚀, ⌚, ⏳),這是從 .NET SDK 6.0.300 增加的,如果版本在這之下就不會看到這些特殊字元。
不過有些指令視窗不支援會無法顯示,例如在筆者使用的開發工具 Rider 的指令視窗(Terminal)中就無法正常顯示(不過筆者自訂的特殊字元卻可以顯示)。

如果發生無法顯示的情況,可以使用環境變數來禁用,將 DOTNET_WATCH_SUPPRESS_EMOJIS 設定為 1 或是 true 即可
筆者使用的是 PowerShell,使用 PowerShell 設定環境變數來禁用 dotnet watch 的特殊自元方式如下:
    
$Env:DOTNET_WATCH_SUPPRESS_EMOJIS = '1'
    

之後再執行就不會看到特殊字元了



參考資料:
Microsoft.Learn - dotnet watch

留言