Visual Studio - 使用Nuspec來自動產生NuGet Package

02 November 2014 — Written by Sky Chang
#NuGet#Visual Studio

前一篇,我們使用MSBuild來達到Build的時候,自動產生NuGet Package,而當我們使用NuGet Package Explorer打開來看的時候,我們會發現Package metadata的資料也順便的幫我們填上了。

image

為什麼NuGet Package會知道填甚麼值呢?,那是因為它會自動抓AssemblyInfo.cs檔案,如下圖。

image

其中的對應表如下圖,我們可以改以下的對應表來產生不同內容的Package metadata,但要特別注意,AssemblyCulture必須保持為空值,不然會NuGet Package的產生,會有問題。

image

但實際上,AssemblyInfo還是不能涵蓋所有的Package metadata,更理想的狀況還是透過nuspec這個檔案來定義Package metadata;但如果自己要Key nuspec這個檔案也太辛苦了,所以我們可以從nupkg這個檔案,來解壓縮,找到nuspec。

( nupkg其實就是一個zip檔案,大家可以透過7-zip工具,或是直接把nupkg這個副檔名改成zip,就可以順利解壓縮了… )

image

之後,我們只需要把nuspec拷貝到專案的目錄底下去就可以了,但要特別注意,nuspec的檔案名稱,必須和專案的名稱相同喔!!

image

完成之後,重build一下,我們就可以發現,這次完全使用nuspec的內容了。

image

最後,要特別注意,因為我們希望建置NuGet Package的時候,他自動去抓取packages.config這個檔案,來解析相依的問題,所以別忘記把nuspec裡面的相依給移除掉喔。

image

也就是這行裡面的內容。

<dependencies>
  <dependency id="Newtonsoft.Json" version="6.0.6" />
</dependencies>

到這邊,就完成嚕!!~

參考資料

Sky & Study4.TW