架設內部 NuGet Server 的兩三事 (02)

在架設 Private NuGet Server 完畢後,

接下來就是要將專案包成 package 推到內部 NuGet Server 囉。

我希望做到的是透過 CI Server Trigger 自動化這一連串的打包與上傳。

打包相關的文章可以參考 建立並發布你的 NuGet 套件 會很有幫助的。

NuGet Task

在 VSTS 上的 Add Task 中有提供 NuGet 相關。

試著用它來 pack .csproj,但是一直無法 -Properties 這個參數把相關資訊包起來。

再來能想到的方法就是建立 .nuspec ,於是找到了 NuGetPackageTemplate.vsix 來做這件事情。

安裝完畢之後建立一個 nuget package template project 按下 Build 會失敗,記得看 Readme step 做即可。

Build 會失敗由於 .csproj 中有 post-build event 。

在 NuGet Package Manager 中搜尋 PubComp.NuGetPack 並下載。

把下載下來的 NuGet.exe & NuGetPack.exe 放至 Solution 下的 .NuGetPack 資料夾內。

將要打包的專案用 Reference 的方式引入

package 的 metadata 都在 NuGetPack.config 做設定。 

把 VersionInfo.cs 的版號設置為 1.0.x 讓它每次產出的版號會遞增,

再來按著 Alt + 拖曳把這個檔案拖至目標打包專案下的 Properties。

接著移除原本在 AssemblyInfo.cs 的 AssemblyVersion 在 Build 階段才不會出現 duplicate version error。

Build & Get .nupkg

Build 成功後應該能夠在對應的組態目錄下找到 .nupkg。

可以利用 NuGet Package Explorer 來檢查相關 metadata 是否正確。

下一篇就來介紹透過 VSTS 整合把產出的 .nupkg 上傳至我們透過 ProGet 架設的私人 NuGet Server 上囉。

相關連結

Automated Creation of NuGet Packages

Auto-Incrementing Build Numbers in Visual Studio.NET