架設內部 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