.NET Core CLI 基本指令練習
Console app 是最基本的 .NET Core 專案類型,常用在測試 class library、提供 class library 範例程式,或者開發跨平台的 CLI 工具,我們可以使用 ng new console 建立 console app 型態專案。
Version
macOS High Sierra 10.13.3
.NET Core SDK 2.1.101
建立 Console App 專案
1 | $ dotnet new console -o MyConsole |
使用 dotnet new 建立專案。
- console : 建立 console 類型專案
- -o :
ooutput,建立在MyConsole目錄下

- 輸入
dotnet new console -o MyConsole將 console 類型專案建立在MyConsole目錄下 - .NET Core SDK 開始建立專案所需的檔案
- 自動 restore dependency
使用 VS Code 開啟專案
1 | $ code MyConsole |
使用 code 執行 VS Code,後面接開啟目錄名稱。

- 第一次使用 VS Code 開啟 .NET Core 專案,會要求建立
.vscode設定檔目錄,按Yes繼續

.vscode被 VS Code 自動建立
編輯 Program.cs

- 開啟
Program.cs - 將
World改成Sam存檔
觀察 MyConsole.csproj

- 開啟
MyConsole.csproj
csproj負責紀錄 project 的 project 與 package 的 reference ,以及其他與 project 相關資訊,使用 Visual Studio 配合 .NET Framework 時,我們不會去維護csproj檔案,而是靠 Visual Studio 幫我們維護,但若使用 VS Code + .NET Core CLI 的組合時,將來會有很多機會要自己維護csproj
還原 Dependency
1 | ~/MyConsole $ dotnet restore |
使用 dotnet restore 根據 csproj 建立 package 與實際位置的 mapping 檔案。

- 按熱鍵 Ctrl + ` 開啟內建的 terminal
- 輸入
dotnet restore還原 dependency
編譯 Console App
1 | ~/MyConsole $ dotnet build -c Release |
使用 dotnet build 編譯專案。
- -c :
configuration,預設dotnet build是以Debug模式編譯,若要以Release編譯,需要配合-c參數

- 輸入
dotnet build -c Release以Release模式編譯 - 自動執行
dotnet restore - 最後 build 出
MyConsole.dll
注意是 build 到
Release目錄
執行 Console App
1 | ~/MyConsole $ dotnet run |
使用 dotnet run 執行專案。
dotnet run明顯感覺比較慢,因為 C# 不是 script,dotnet run事實上做了幾件事情 :
dotnet restoredotnet build- 最後才是執行程式
所以才會感覺比較慢

- 輸入
dotnet run顯示執行結果
1 | ~/MyConsole $ dotnet /Users/oomusou/Code/CSharp/MyConsole/bin/Release/netcoreapp2. |
直接使用 dontet 執行 dll,由於使用 Release 模式編譯,速度非常快。

- 輸入
dotnet直接執行編譯過Release模式的MyConsole.dll - 馬上出現
Hello Sam!,不用等待
實務上不建議直接使用
dotnet run,因為速度很慢,要用dotnet執行編譯過且最佳化的 dll
清除 Assembly
1 | ~/MyConsole $ dotnet clean -c Release |
使用 dotnet clean 清除所編譯的 dll。
- -c :
configuration,預設dotnet clean是清除Debug模式的 dll,若要清除Release模式的的 dll,需要配合-c參數

- 輸入
dotnet clean -c Release清除以Release模式 build 的MyConsole.dll - 查看
bin/Release/netcoreapp2.0目錄,確認所有檔案已經清除
發佈 Console App
1 | ~/MyConsole $ dotnet publish -c Release |
使用 dotnet publish 將編譯後的 dll 與其 dependency 整理到 publish 目錄,將來只要將此目錄 deploy 到 server 即可。
- -c :
configuration,預設dotnet publish是將Debug模式的 dll 整理至publish目錄,若要整理Release模式的的 dll,需要配合-c參數

- 輸入
dotnet publish -c Release將欲 deploy 的檔案整理到bin/Release/netcoreapp2.0/publish目錄 - 在
publish目錄下,我們總共發現有 4 個檔案MyConsole.dll: 以 IL 為內容的 assemblyMyConsole.deps.json: 描述執行 dll 所需要的 dependencyMyConsole.runtimeconfig.json: 描述 dll 所需要的 .NET Core runtime 版本,以及其他 runtime 設定 (Ex. Garbage Collection 方式)MyConsole.pdb: 在 production 環境啟動 debug 時使用
執行 Console App
1 | ~/MyProject $ dotnet bin/Release/netcoreapp2.0/publish/MyConsole.dll |
使用 dotnet 執行 publish 後的 dll。

- 輸入
dotnet直接執行 publish 過的MyConsole.dll - 馬上出現
Hello Sam!,不用等待
Conclusion
- 藉由
Hello World練習最基本的 .NET Core SDK 指令 dotnet run因為要執行dotnet restore、dotnet build,所以執行速度較慢dotnet publish會幫我們將 dependency 加以整理,方便 deployment