創建nuget包時,nuget包的文件名中的版本似乎來自Web應用程序項目中的AssemblyInfo文件。我還在nuspec文件中創建了一個版本屬性。NuSpec版本屬性vs程序集版本
這兩個版本號之間的關係是什麼?是否附有任何約定?
創建nuget包時,nuget包的文件名中的版本似乎來自Web應用程序項目中的AssemblyInfo文件。我還在nuspec文件中創建了一個版本屬性。NuSpec版本屬性vs程序集版本
這兩個版本號之間的關係是什麼?是否附有任何約定?
至於約定的的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
和朋友的信息。
彙編版本和nuget軟件包版本之間不需要有關係。按照慣例,許多維護人員對兩者都使用相同的編號。
如果您沒有nuspec,或者您使用nuget.exe spec
來創建標記化的nuspec文件,則使用相同編號的約定也是nuget.exe
默認值。但是,如果將$ version $ token替換爲值,則該值將優先考慮,並將用於包文件名中。
您還可以在命令行上設置版本,該版本優先於上述所有版本。
對澤維爾的博客更多信息:NuGet $version$ token explained