嘗試以下操作:
1)重命名你.nuspec匹配的.csproj名稱:
如果您的項目是:MyLib.csproj
重命名MyLib.nuspec到MyLib.csproj.nuspec
2)修改.nuspec文件,如下所示:
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<version>$version$</version>
<authors>$author$</authors>
<id>$id$</id>
<title>$id$</title>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<summary>$description$</summary>
</metadata>
</package>
這裏,作業由的NuGet的「$完成版本$「令牌(以及其他)
查看此Nuget article獲取更多標記和信息。
3)使用以下郵政建立在你把一個.csproj.nuspec文件中的每個項目的事件(請刪除回車鍵):
mkdir "$(SolutionDir)GeneratedPackages"
"$(SolutionDir).nuget\nuget.exe" pack "$(ProjectPath)"
-OutputDirectory "$(SolutionDir)GeneratedPackages"
-basepath "$(SolutionDir)$(ProjectName)\$(OutDir)"
如果我們有一個解決方案C:\ MySolution \ MyLib中。 SLN和項目,在C:\ MySolution \ MyLib中\ MyLib.csproj,我們.nuspec文件應該是C:\ MySolution \ MyLib中\ MyLib.csproj.nuspec和後生成事件命令會是什麼樣子:
mkdir "C:\MySolution\GeneratedPackages"
"C:\MySolution\.nuget\nuget.exe" pack "C:\MySolution\MyLib\MyLib.csproj"
-OutputDirectory "C:\MySolution\GeneratedPackages"
-basepath "C:\MySolution\MyLib\bin\debug\"
修復nuget.exe的路徑。在我的情況下,我正在使用Nuget「在生成時自動重新生成缺失的依賴關係」,並且在解決方案中的.nuget文件夾下有一個本地副本。
請注意,我們不打電話給nuget與.nuspec文件,我們是 直接與.csproj調用它!
該策略還將包括Nuget在安裝軟件包時創建的 packages.xml中聲明的所有Project依賴項。 (自動,每次你建立)
大功告成!現在改變大會和文件版本在
項目>屬性>大會信息
重要:如果設置了$作者$和/或$描述$令牌,填補也是大會的公司及說明字段在這裏。如果遇到麻煩,請刪除$ author $和/或$ description $標記並嘗試再次編譯。
,建立自己的項目,你會看到在/ GeneratedPackages文件夾您在項目屬性中設置的版本的MyLib.X.X.X.X.nupack。如果你設置了依賴關係,你會發現它已經被自動包含爲包依賴關係。
我們在Jenkins CI服務器上使用此策略來自動構建解決方案,並將包從GeneratedPackages複製到我們的定製NugetServer。
您也可以完成後生成事件與
nuget push
要生成的包發送到的NuGet服務器
問題發佈:
正如在評論中提到,有是一個不允許Nuget.exe在RELEASE模式下生成軟件包的問題。
對於這個腳本每一個項目:
- 項目屬性>構建
- 在「配置」下拉列表中選擇「所有配置」
-
爲了修復它做到這一點在「輸出」部分,更改「輸出路徑:」字段,例如,我目前使用「bin \」(不包括cuotes)
可能重複(http://stackoverflow.com/questions/2243593/determine-assembly-version-during-a-post-build-event) – sll