0%

【CI CD實作】在 .NET 透過nuget.config 自訂NuGet 套件來源(番外篇)

前言

通常我們在開發.NET專案時,若因為專案中有使用到公司內部的Library時,通常都會架設Private Nuget Server來進行套件添加。
而一般來說添加套件來源的方式大多都是在 Nuget管理員的介面中選擇添加的目錄夾或是Url來操作。
但這樣的方式如果實現CI/CD時,則會遇到找不到套件來源的問題,原因是Jenkins是直接將Github上的專案Clone下來進行建置與部署。
但我們設定套件來源的時機則是在專案Clone後手動開啟Nuget管理員添加的。
因此本篇主要會教學如何透過幾種方式讓Jenkins能夠讀的到自訂的Nuget套件來源。

建立Nuget.config

我們可以在方案的根目錄下輸入以下指令進行Nuget範本建立(或直接新增檔案輸入也可以)

1
dotnet new nugetconfig

這時候會在當前目錄下建立一個 nuget.config 其內容如下:

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<!--如果想要取消繼承在 %AppData%\NuGet\nuget.config的設定,可以加上 <clear/> -->
<clear />
<add key="nuget" value="https://api.nuget.org/v3/index.json" />
</packageSources>
</configuration>

因此我們可以透過 add的方式,手動將私有的套件來源加上

1
<add key="來源名稱" value="來源網址" />

完成後關閉專案再重新啟動,就會發現Nuget的套件來源已經自動補上在config設定的自訂來源了。

在機器上手動添加全域套件來源

剛剛有提到.NET其實預設在 %AppData%\NuGet\nuget.config 有全域的設定檔
這也就是為什麼 Jenkins可以直接執行那些Nuget的套件,但是自訂來源的套件卻無法執行的原因。

因此我們也可以在部署的機器上手動添加自訂來源:

1
dotnet nuget add source <來源網址> -n <自訂名稱>

但這個方式不太建議,除了每一台機器都要手動添加以外,也需要同步管理每一個的Nuget package list,因此如果都用config的話,就可以一目瞭然了。

以上文章敘述如有錯誤及觀念不正確,請不吝嗇指教:)

有任何家教、案子 或技術相關問題 請都歡迎聯繫我

http://www.zhenghui.idv.tw/