dotnet專案CICD研究整理1

VS建構簡單.NET專案與運行&NuGet套件管理

ZONGRU Li
Aug 22, 2023

1.Visual Studio創建簡單範例專案

先簡單透過VS創建專案:

後面也可能會有MVC專案的話則要另選:

這邊先用更上面API專案當例子:

可以直接在VS上面啟動程式:

然後看到:

上面就很經典的Swagger,可以直接在UI上面測試:

其中啟動的相關設定在Properties底下的launchSettings.json內:

如上所示,其實是跑IIS的方式起來的(採用上圖中間那個)

另外對應環境的組態設定檔是這個(相關詳細參考鐵人文LINK):

dotnet core程式進入點 →Program.cs

2.確認Library相關設定

#查看當下專案有哪些設定的依賴套件
dotnet list package --include-transitive

實際本機Library會存在於(注意都小寫)

因為剛剛有啟動編譯,有驅動下載Library:

在VS中透過VS的NuGet管理工具新增Library:

比如透過這個工具新增了Microsoft.OpenApi後

但是該專案的Library設定檔還不會立即更新依賴清單(專案名稱.csproj):

這時候要透過建置方案來更新依賴的Library內容:

下方輸出會看到:

然後Library清單.csproj檔會更新:

在VS中也可以透過NuGet指令工具查看,先打開NuGet主控台:

#查詢指令help:
get-help nuget
#實際查看專案中依賴的清單:
Get-Package
#或是用下面這個都可以:
NuGet\Get-Package

nuget公庫也能找到想安裝的Library及其NuGet安裝指令:

由於我上面的專案有用到SDK套件,就沒辦法透過nuget指令封裝

#我嘗試先建立專案描述檔.nuspec:
nuget spec

#後面再嘗試透過nuget工具打包專案,但是就提示要改用dotnet工具來做:
nuget pack

後續嘗試後調整.csproj依賴檔,新增以下兩行

#最後透過dotnet指令看起來有打包成功:
dotnet pack

但是一般dotnet專案實際不是包成.nupkg檔在運行,.nupkg只是Library

而是編譯後的檔案在運行

參考微軟(LINK):

我先移除剛剛nuget spec指令產出的WebApplicationWebAPI.nuspec檔:

應該用不到
#接著透過以下dotnet指令編譯即可
dotnet publish --configuration Release

根據上面微軟文件截圖第二點描述

bin\Release\net6.0\publish\這個目錄下就是可以佈署到IIS的物件

其中我有在其他文章看到,上述畫面中的web.config就是iis要認得的東西

這邊順便試著移除本機的所有套件:

publish目錄下的東西也清空:

#再次執行:
dotnet publish --configuration Release

發現也是會驅動抓套件:

3.為離線IIS佈署環境打包套件與使用套件

爬了許多文章包含微軟"將 ASP.NET Core 應用程式發佈到 IIS"

都是說在佈署電腦上要另裝.NET Core SDK

然後透過donet publish指令完成編譯(所以publish機上要有nuget套件)

接著可以用各種方式搬移編譯後的目錄內檔案到IIS Server佈署目錄裡

參考這篇解答(LINK):

然後嘗試透過上面的package目錄來建構專案:

其中可以注意到dotnet build與dotnet publish差異(LINK):

一個只有建構,另一個是除了建構還有打包來準備佈署

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet