每位開發者都應該了解的 5 個基本 .NET CLI 命令
大多數C#開發者會在IDE內部進行整個工作流程,點擊按鈕進行編譯、啟動和測試應用程式。 這種方法有效,直到不再有效為止。 自動化管道、遠端伺服器和容器化環境沒有圖形介面,掌握一些終端命令能讓您在這些情況下保持高效,而不需使用滑鼠。
在他的影片"每個開發者應該知道的5個必備.NET CLI命令"中,Tim Corey介紹了覆蓋日常開發中最多範圍的五個dotnet操作:publish。 每一個命令都有實際示範,顯示不僅僅是語法,還有何時及為何需要使用它。 不論您對終端是否熟悉,這些命令都值得您記住。
使用dotnet --info檢查您的環境
[0:31 - 1:25] 在執行任何專案命令之前,Tim首先驗證開發環境。 單獨的dotnet --info更進一步:
dotnet --info
dotnet --info
這會打印出您機器上安裝的每個SDK和運行時版本,連同操作系統的詳細資訊及活躍的架構。 Tim在.NET 10上示範了這一點,但該命令在任何版本上工作都相同。 知道您安裝了什麼,在排除版本不匹配或確保CI伺服器與您本地環境一致時特別有幫助。
命令 1:dotnet build
[2:16 - 3:44] 第一個命令編譯您的專案而不啟動它:
dotnet build
dotnet build
從專案目錄中運行此命令會讀取bin資料夾下生成編譯輸出。 Tim指出編譯是它自己的獨立步驟,與執行分開。 當您希望在推送到存儲庫或交給構建伺服器之前驗證代碼是否乾淨編譯時,這種分離很重要。
.NET SDK在編譯過程中處理依賴解析,拉取任何丟失的NuGet包並確保所有引用組件存在。 如果在這個階段出現問題,錯誤信息會直接指出問題所在,不論是缺少引用、語法錯誤還是目標框架不匹配。 在應用程式運行之前捕捉這些問題可以節省整個開發周期的時間。
命令 2:dotnet run
[3:44 - 5:42] 當run會邁出下一步並啟動應用程式:
dotnet run
dotnet run
如果需要,這會編譯專案然後執行生成的輸出。 對於控制台應用程式,這意味著在終端中運行它。 對於網路專案,內建的Kestrel伺服器會啟動,應用程式會在本地URL上可用。
Tim示範了一個網絡應用程式,打開瀏覽器導航到運行的網站確認一切正確加載。 run產生了一個活的、交互式的結果。 在積極開發過程中,這是您最常用於測試更改並查看其效果的命令。
命令 3:dotnet watch
[5:42 - 7:06] 停止應用程式,做出更改,再重新啟動,很快就會變得煩人。 watch命令消除了這個週期:
dotnet watch
dotnet watch
這會將運行過程包裝在文檔監視器中。 當您保存對任何源文件的更改時,CLI會檢測到修改並自動重新編譯和刷新應用程式。 對於由ASP.NET Core構建的網絡應用程式,對Razor文件、CSS和C#代碼的更改無需手動重啟就會出現在瀏覽器中。
Tim展示了熱重載行為的運行:編輯頁面,保存,立即看到更新反映出來。 在UI工作中,這種緊密的反饋循環特別有價值,小調整不斷發生。 與其循環停、編輯、重建、啟動,您可以專注於代碼,讓工具處理其餘部分。
命令 4:dotnet clean
[7:06 - 7:56] 隨著時間的推移,編譯工件會在clean命令解決了這個問題:
dotnet clean
dotnet clean
運行它會刪除輸出目錄的內容,以便隨後的構建從頭開始。 Tim將這描述為一種調試工具,而不是每次更改後都運行的東西。 當您的專案表現不如預期時,並且您懷疑緩存的輸出是肇事者時,build保證您工作的是完全新的編譯結果。
當在版本控制中切換分支、將依賴項升級到新的主要版本或解決似乎無法破壞的不規則建議警告時,這種習慣尤其有用。
命令 5:dotnet publish
[7:56 - 9:01] 最後一個命令彌合了開發和部署之間的鴻溝:
dotnet publish
dotnet publish
當publish創建準備好部署的套件。 編譯後的組件、配置文件、靜態資源和所有所需的運行時組件都在publish目錄中,您可以直接將其複製到伺服器。
publish的區別使一些開發者不知所措。 build輸出包括開發期間有用的調試符號和引用,但在生產中不必要的(有時甚至是不受歡迎的)。 發布剝去了那些額外的內容,並將輸出組織為其目標環境。 當部署到Docker或上傳到雲主機時,已發布的輸出是應該出現在最終映像或發行套件中的。
總結:五個命令,一個工作流程
[9:01 - 9:15] Tim以列出所有五個命令作結:dotnet publish。 作為一組來看,這些命令涵蓋了從編譯到部署的核心開發循環。 每一個命令都有其特定的用途,知道何時選用哪個給您控制層次,而單靠點選IDE按鈕是做不到的。
結論
[9:15 - 9:30] 這五個CLI命令處理了您在開發過程中最常執行的任務:編譯、運行、即時重新加載、清除舊輸出和打包以便發行。 它們適用於每個.NET專案類型以及SDK支持的每個操作系統。
下次您打開終端時,不管是在本地計算機、容器內還是遠程伺服器上,您已經擁有了在沒有圖形介面的情況下完成完整開發週期的詞彙。
示例提示:您可以將dotnet clean && dotnet build。 這保證了一步就用從頭開始的編譯,在解決橫跨增量構建持續存在的問題時特別有用。
