2012-08-15 89 views
25

創建nuget包時,nuget包的文件名中的版本似乎來自Web應用程序項目中的AssemblyInfo文件。我還在nuspec文件中創建了一個版本屬性。NuSpec版本屬性vs程序集版本

這兩個版本號之間的關係是什麼?是否附有任何約定?

回答

18

至於約定的的NuGet軟件本身,並將其應用到包在畫廊的語義,確實版本由SemVer描述。 具體而言,您可以通過在「-beta.4」之後添加後綴來指定測試版本。例如,查看圖庫如何顯示the latest version of AutoFac,並比較它如何顯示an old release注意文字「這不是最新版本的Autofac可用」。編輯:圖庫不再似乎提供任何特殊消息 - 當前版本)和an old PRE-release version(文本「這是Autofac的預發佈版本」)。

不幸的是,AssemblyInfo.cs中的AssemblyVersion可能不包含字母或連字符,因此無法以此方式使用。然而,AssemblyInformationalVersion可能有字母和連字符,如果您提供它,NuGet將使用該代替AssemblyVersion替換您的nuspec文件中的$version$令牌。更重要的是,AssemblyInformationalVersion(也稱爲「產品版本」,如果您在Windows資源管理器中檢查DLL的詳細信息),至少對我來說,更好地代表了NuGet版本應該匹配的內容。

我有在這種方法有所擔憂,我預計離開AssemblyVersion同樣通過各種測試迭代和AssemblyInformationalVersion的最終生產的迭代,這意味着我讓幾個不同的版本,我的DLL的成可能表現不同或不正確的野生動物,但就CLR而言都是相同的(CLR 只有關心AssemblyVersion)。但實際上,這經常發生(包括上面介紹的AutoFac包),並且這似乎不會導致問題。

查看What are differences between AssemblyVersion, AssemblyFileVersion and AssemblyInformationalVersion?的兩個優秀最高票數的答案,獲取更多關於AssemblyInformationalVersion和朋友的信息。

7

彙編版本和nuget軟件包版本之間不需要有關係。按照慣例,許多維護人員對兩者都使用相同的編號。

如果您沒有nuspec,或者您使用nuget.exe spec來創建標記化的nuspec文件,則使用相同編號的約定也是nuget.exe默認值。但是,如果將$ version $ token替換爲值,則該值將優先考慮,並將用於包文件名中。

您還可以在命令行上設置版本,該版本優先於上述所有版本。

對澤維爾的博客更多信息:NuGet $version$ token explained

相關問題