「跨 Mac|Linux|Windows 三大平台 .NET Core 開發實作」閱讀筆記 === 已經習慣 Visual Studio 2017/2019 的視窗介面操作 看這本書可以習慣一下命令模式來體驗 .NET Core 的使用 ## :star:學習目標 * 學會利用 dotnet 指令來建立與發佈專案 * 學會利用 Visual Studio Core 來建立或編輯、發佈 .NET Core 專案 ## :star:dotnet 指令 * dotnet 指令是跨平台的 假設在 windows 學會了 dotnet 指令建立專案 你就能在 Mac、Linux等平台建立 .NET Core 專案 ### :one:dotnet new * dotnet new 根據後面所帶入的 Templates 的範例 Short Name 短名 建立新的專案 :::info ==注意 dotnet new 出來的專案都沒有 sln 檔== ::: ``` dotnet new -all ``` * 可以列出所有的範本清單 ![](https://i.imgur.com/eKvPY8k.png =700x) * 指定用 F# 語言來建立 console 專案 ``` dotnet new console -lang f# ``` * 新增 .NET Core 3.1 且沒有設定身分驗證的 ASP.NET Core C# MVC 應用程式 ``` dotnet new mvc -au none -f netcoreapp3.1 ``` * 新增 .NET Core 3.1 的 xUnit 應用程式 ``` dotnet new xunit -f netcoreapp3.1 or dotnet new xunit --framework netcoreapp3.1 ``` 要確認一下 dotnet 的安裝版本 會限制 -f 後面的 netcoreapp版本號 且這兩個指令結果是一樣的 * 列出關鍵字 view 的所有範本 ``` dotnet new view -l ``` ![](https://i.imgur.com/e01zBnb.png =700x) 會包含 Template 與 Short Name 欄位 ### :two:dotnet restore * 還原專案依賴項?字面上看起來我還沒辦法解釋得很好 * 查看 dotnet restore 的指令說明 ``` dotnet restore -h ``` ![](https://i.imgur.com/7lr4P9M.png) * 還原目前目錄中專案的依賴項 ``` dotnet restore ``` * 還原指定目錄中專案的依賴項 ``` dotnet restore ~/projects/coreapp/coreapp.csproj ``` ### :three:dotnet run * 執行目前目錄的程式碼 其實等同於執行 ``` dotnet run or dotnet myapp.dll ``` * 指定執行特定目錄的專案檔(不指定則是目前目錄) ``` dotnet run --project ./console/console.csproj ``` ![](https://i.imgur.com/3PrLGKd.png) ### :four:dotnet build * 編譯專案執行檔與所有相依項 * 編譯目前目錄專案 ``` dotnet build ``` * 編譯目前目錄專案並輸出到 .\mydll ``` dotnet build --output .\mydll ``` ![](https://i.imgur.com/NvEEn5i.png) ### :five:dotnet test * 單元測試 暫略過 ### dotnet pack * 建立 NuGet 套件 暫略過 ### :six:dotnet publish * 封裝應用程式與所有依賴項道資料夾中,準備發佈 * 發佈目前的目錄 ``` dotnet publish ``` ![](https://i.imgur.com/BedqLVc.png) * 發佈指定目錄專案 ``` dotnet publish ./console/console.csproj ``` ![](https://i.imgur.com/F4WpZIi.png) ### :seven:dotnet 指令實戰 * 用一個實例,串起剛剛所學的指令 馬上獲得「未到班 dotnet 指令大師」稱號 暫略過 ## :star:VS Code 開發 .NET Core * 用 VS Code 開啟目前目錄的專案 ``` code . ``` * 執行後在執行目錄的 .vscode 目錄裡會新增 lunch.json 與 task.json 這兩個檔案 * task.json 用於設定執行那些指令來建置專案 ```jsonld= { "version": "2.0.0", "tasks": [ { "label": "build", "command": "dotnet", "type": "process", "args": [ "build", "${workspaceFolder}/console.csproj", "/property:GenerateFullPaths=true", "/consoleloggerparameters:NoSummary" ], "problemMatcher": "$msCompile" }, { "label": "publish", "command": "dotnet", "type": "process", "args": [ "publish", "${workspaceFolder}/console.csproj", "/property:GenerateFullPaths=true", "/consoleloggerparameters:NoSummary" ], "problemMatcher": "$msCompile" }, { "label": "watch", "command": "dotnet", "type": "process", "args": [ "watch", "run", "${workspaceFolder}/console.csproj", "/property:GenerateFullPaths=true", "/consoleloggerparameters:NoSummary" ], "problemMatcher": "$msCompile" } ] } ``` * launch.json 設定要指定的偵錯器的類型,以及程式應該在什麼偵錯下執行。 ```jsonld= { // 使用 IntelliSense 以得知可用的屬性。 // 暫留以檢視現有屬性的描述。 // 如需詳細資訊,請瀏覽: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": ".NET Core Attach", "type": "coreclr", "request": "attach", "processId": "${command:pickProcess}" }, { "name": ".NET Core Launch (console)", "type": "coreclr", "request": "launch", "preLaunchTask": "build", "program": "${workspaceFolder}/bin/Debug/netcoreapp3.1/console.dll", "args": [], "cwd": "${workspaceFolder}", "console": "internalConsole", "stopAtEntry": false }, { "name": ".NET Core Attach", "type": "coreclr", "request": "attach", "processId": "${command:pickProcess}" } ] } ``` ## :star:VS2017 開發 .NET Core [按一下按鈕以下載最新版的 Visual Studio 2017](https://docs.microsoft.com/zh-tw/visualstudio/releasenotes/vs2017-relnotes) * 新增 .NET Core 專案 ![](https://i.imgur.com/XsDs7Ld.png) ###### tags: `筆記` `.NET Core`