前言
在開發完代碼的時候,為了確保代碼在應用程式執行的狀況,會在 Visual Studio IDE 使用偵錯模式 F5 或是 Ctrl+F5 進行偵錯,如果執行狀況不如預期時就會關閉偵錯,重新修改代碼在編譯再重新進行偵錯,簡單來說流程像是 改 Code > 編譯 Ctrl + Shift + B > 測試 F5 or Ctrl + F5 > 不如預期 > 改 Code ,仔細想想這些動作都是重複的,如果可以省下重複的動作可以去做更有效益的事情,今天要分享的是 Dotnet watch tool,它可以檢查代碼有異動時重新啟動應用程式,減少修改完 Code 之後看到結果這之間所花費的時間,若有問題歡迎留言一起討論。
設定安裝
如果您的預設是 ASP.NET Core 2.0 以前的版本,需要在專案檔中加入下列 package,如果是 ASP.NET Core 2.1 以上的話,此工具會預設安裝再 .NET Core SDK 中
- Microsoft.DotNet.Watcher.Tools
在 Visual Studio 2019 專案點擊 Project 檔案可直接開啟,確認是否有安裝成功
使用方式
dotnet watch 可以監控當代碼進行修改時重新啟動應用程式,當我們在開發 Web API 或是 MVC 專案的時候,如果想要修改完畢之後立即看到成果這非常有用,也可省下時間增加生產力,如果是使用 IISExpress 時預設已經啟用。在 dotnet watch 中支援的 command 如下
使用方式相當簡單,可以透過以下簡單範例展示其效果,首先建立 ASP.NET Core API 專案,並使用 Ctrl + F5 執行,在預設的專案範本 ValueController 中 GET api/values 得到的結果會是 Value1與 Value2
- "value1",
- "value2"
接著在專案目錄下開啟 powershell,開啟之後輸入下列指令
- dotnet watch run
會開啟 dotnet watch 視窗
接著可以在原先的 value Controller 中修改輸出,改為 value11 以及 value22,更新完畢之後儲存,在儲存後可以看到開啟的 console 會偵測檔案有異動,會進行編譯與重新執行應用程式的動作
- watch : Exited
- watch : File changed: C:\Users\marcustung\source\repos\WebApplication1\WebApplication1\Controllers\ValuesController.cs
- watch : Started
接著在到開啟的瀏覽器按下 F5 重新整理,就可以看到 API 輸出已更新完新的內容,完整內容如下
感想
這篇介紹了 dotnet watch 最基本的應用情境,dotnet watch 除了可以自動編譯之外還支援測試等功能,在 MSDN 文章中也有介紹要監控/ 不要監控的設定方式,另外如果想了解 dotnet watch 是怎麼實作出來的也可以參考 GitHub : 傳送門,如果你也有跟我一樣的困擾想增加其工作效率,或許可以試用看看 dotnet watch :)
參考
Related Posts:
[VS2017] 如何修改 Visual Studio IDE 顯示語系 前言
目前筆電使用的 Visual Studio 是繁體中文版,在使用上用起來沒英文版那麼順,很多字詞在翻譯上總是讓人覺得驚喜,忍無可忍無須再忍決定改為英文版,過去 VS 可以透過下載的方式安裝語言包,但這招在 Visual Studio 2017 似乎無效(?,這邊簡單紀錄 Visual Studio 如何安裝不同語系的過程
設定語系
IDE 語系設定
設定方式 : 工具 > 選項 > 環境… Read More
[IIS] 如何解決網站第一個請求 Request 特別慢 ?問題
相信大家都有類似的經驗,在寫完的 Code 佈署到 IIS 開好網頁要準備要進入網站要測試時,網站的第一個請求總是特別慢,尤其是開發已久的程式要在 Production 驗證時心情總是特別緊張,這等待的時間更是讓人很煎熬(不知道會不會爆炸 XD),如何加速網站第一個 Request 呢 ? 過去待過的公司會在佈署完後透過 Jenkins 去打 Server 來 "喚醒" 它,在此簡單記錄一下如何透過 IIS 設定加速網站第一個 Reques… Read More
[UnitTest] Visual Studio 2017 按右鍵無法建立單元測試 ? 問題
最近心血來潮使用家中舊電腦小白寫 Code,在練習測試中發現竟然有點怪異,在要測試的 method 按下右鍵沒有 建立單元測試 Create Unit Test 選項,但相同練習專案拿到公司筆電就是正常的,經比對後發現舊筆電 Visual Studio 版本少安裝測試功能,以下簡單紀錄解決問題的過程
解決方案
在 Visual Studio 2017 早期版本這是已知問題,有開發者在 vs community 回報給開… Read More
[AWS] 使用 AWS SDK上傳檔案到 AWS S3前言
最近在與第三方做串接時,有個需求是要將圖片存起來放在 Application Server 上,與同事討論建議將圖片放在AWS S3 上,多年前有微軟剛推出 Azure 時有接觸過一些,但這幾年隨著年紀增長早已忘光光,這篇簡單紀錄 C# 透過 AWS SDK 將圖片上傳到 AWS S3 上的步驟與要注意的細節
AWS S3
Amazon Simple Storage Service 功能簡稱 S3,是Amazon的物件儲存服務,… Read More
[.NET] 無法載入檔案或組件 'Newtonsoft.Json' 或其相依性的其中之一 (發生例外狀況於 HRESULT: 0x80131040)問題
接獲同事報案,反應在測試環境出現以下錯誤訊息 無法載入檔案或組件 'Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 或其相依性的其中之一。 找到的組件資訊清單定義與組件參考不符。 (發生例外狀況於 HRESULT: 0x80131040) ,實際專案底下 bin 資料夾該 dll 是存在的,心想這問題… Read More
Could not find a MSBuild project file in 'D:\WorkCode\diyi.smartbox\WebApi\bin\Debug\netcoreapp3.1'. Specify which project to use with the --project option.
回覆刪除