.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 :
o
output,建立在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 :
c
onfiguration,預設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 restore
dotnet 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 :
c
onfiguration,預設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 :
c
onfiguration,預設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