dotnet專案CICD研究整理1
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):
一個只有建構,另一個是除了建構還有打包來準備佈署