当创建一个NuGet包,在NuGet包的文件名中的版本似乎来自于Web应用程序项目的AssemblyInfo文件。 我也创建了nuspec文件内的版本属性。
什么是这两个版本号之间的关系,并没有任何约定爱慕?
当创建一个NuGet包,在NuGet包的文件名中的版本似乎来自于Web应用程序项目的AssemblyInfo文件。 我也创建了nuspec文件内的版本属性。
什么是这两个版本号之间的关系,并没有任何约定爱慕?
至于约定 ,如描述的NuGet软件本身,并将其应用到包库中的语义,并版本SemVer 。 具体来说,你可以通过“-beta.4”什么的后面添加您的nuspec版本号指定的beta版本。 例如,看画廊是如何显示的最新版本AutoFac的 ,并且比较它是如何显示的旧版本 ( 注意文本“这不是可用的最新版本Autofac的。” 编辑:画廊似乎不再提供任何特殊消息非当前版本)和一个旧的预发布版本 (与文本“这是Autofac的预发布版本。”)。
不幸的是, AssemblyVersion
在AssemblyInfo.cs
不得包含字母或连字符,所以不能以这种方式使用。 然而, AssemblyInformationalVersion
中可能存在字母和连字符,如果你提供给它,会的NuGet使用的是代替AssemblyVersion
更换$version$
令牌位于nuspec文件。 更重要的是,在AssemblyInformationalVersion
(也被称为“产品版本”,如果你检查DLL在Windows资源管理器的详细信息),至少对我来说,更好地代表的NuGet版本应该匹配什么。
我有在这种方法有所担忧,我希望离开AssemblyVersion
通过各种测试迭代和最终产品的迭代相同AssemblyInformationalVersion
,这意味着我让几个不同的版本,我的DLL到野外可能不同的行为或不正确的,但都是相同至于CLR而言(在CLR 只在乎AssemblyVersion
)。 但在实践中,这种情况经常(包括与上述AutoFac包)和它似乎并没有引起问题。
见两个优秀的最高投票的答案是什么的AssemblyVersion,和的AssemblyFileVersion之间AssemblyInformationalVersion差异? 有关更多信息AssemblyInformationalVersion
和朋友。
这里并不需要成为集版本和NuGet包版本之间的关系。 按照惯例,许多维护者使用两个相同的号码。
使用相同数量的约定也是nuget.exe
默认值,如果没有nuspec,或者你使用nuget.exe spec
创建一个切分nuspec文件。 不过,如果你用一个值替换$版本$令牌,则该值将precendence,并将在包文件名中使用。
您还可以设置在命令行中,其优先于上述所有的版本。
在Xavier的博客更多信息: 的NuGet $版本$令牌解释