前一篇文章簡單介紹了Azure DevOps Artifacts,知道了它就是用來存放私有套件的套件庫,這一篇我們就來將C# Project產生的nuget package上傳上去吧!
首先,要產生nuget package最簡單的方式,就是在C#專案中的屬性中勾選Generate NuGet package on build,這樣在編譯專案的時候就會自動產生nupkg檔案了:

nupkg檔案預設會放在Debug或Release裡,和dll不是在相同的目錄:

接下來要準備將nupkg檔案上傳到Azure DevOps Artifacts,先在Artifacts feed的頁面中點選Connect to feed:

接著可以選擇用dotnet cli或是nuget cli來上傳package,Visual Studio選項並沒有上傳的功能:

選擇dotnet或nuget任何一個cli的指令都差不多:


如果有裝Visual Studio的話,dotnet cli不需要另外安裝,nuget cli則是要另外下載(可以參考官方文件,或是點這下載)。
上圖的Project setup中提到將nuget.config檔案加到C#專案或sln方案所在的目錄,其實也有別的方式:
如果是下載nuget.exe檔案的話,照著內容複製(不要點它的複製按鈕,只會複製add那行),貼在記事本之後儲存成nuget.config放在和nuget.exe相同的位置就行。
如果是要用dotnet cli的話,可以透過VS的Package Manager Settings設定Package source,加入一個新的Source來源,名稱可以自取,網址就照指示上的複製它的網址貼上就行:


上圖的指示中還有提到,如果你是第一次使用Azure Artifacts,要下載一個工具(Get the tools),其實就只需要在PowerShell中貼上下面這行執行就可以了(執行過一次就行,以後就不用了):
iex "& { $(irm https://aka.ms/install-artifacts-credprovider.ps1) }"
上面這個主要是讓cli在執行push package到Artifact feed的時候可以跳出登入的畫面,所以如果執行cli的時候出現下面的訊息就是少裝了credProvider(上面那個):
error: Response status code does not indicate success: 401 (Unauthorized)
最後只需要打開cmd或powershell,輸入下面的指令就可以上傳nuget package檔案了:
dotnet nuget push --source PackageSource名稱 --api-key az nupkg檔案路徑
nuget push -Source PackageSource名稱 -ApiKey az nupkg檔案路徑
上面兩個指令是不是很像?第一個是用dotnet cli,第二個就是nuget cli(nuget.exe),自己選一個方式吧!
Push完之後就可以在Artifact feed看到剛剛推上去的Package了:

這時候在VS裡面也可以搜尋到剛才上傳的Package了(記得右上的Package Source要選上面新增上去的):
