我正在使用Nuget 4.3.0.4406
来包装版本为5.2.29.181212.8244-RC
的程序集,但我得到
2018-12-12T08:44:02.8053309Z ## [错误] nuget命令失败 退出代码(1)和错误('5.2.29.181212.8244-RC'不是有效的版本 串。参数名称:值)
版本控制不符合semver,但Nuget施加了限制,目前尚不清楚。这是否意味着Nuget不仅支持SemVer,而且还实施了它?我找到了this,但不确定SpecialVersion
是什么意思?
基本上,我只想将x.y.z.[date+buildid](-rc)
与规范版本绑定在一起,以使它不能被忽略(我们不拥有该版本)。
x.y.z
有效,但9.9.9.1812129999-rc
和9.9.9.18121299999-rc
无效,在哪里指定? (这是数字大小限制,而不是字符串长度)答案 0 :(得分:2)
取自Microsoft文档上的NuGet Package Versioning Reference:
借助NuGet 4.3.0+和Visual Studio 2017 15.3 +,NuGet支持语义版本2.0.0。
较旧的客户端不支持SemVer v2.0.0的某些语义。如果以下任一陈述为真,则NuGet认为软件包版本特定于SemVer v2.0.0:
- 预发行标签以点分隔,例如1.0.0-alpha.1
- 该版本具有构建元数据,例如1.0.0 + githash
对于nuget.org,如果以下任一陈述为真,则将软件包定义为SemVer v2.0.0软件包:
- 该软件包自己的版本符合SemVer v2.0.0,但不符合上述SemVer v1.0.0。
- 任何软件包的依赖项版本范围都具有符合SemVer v2.0.0的最低或最高版本,但不符合SemVer v1.0.0的上述定义;例如[1.0.0-alpha.1,)。
当然,您可以在semver.org上找到Semmantic版本控制规范。我认为您对spec-item10特别感兴趣:
构建元数据可以通过在补丁或预发行版本之后立即添加加号和一系列由点分隔的标识符来表示。标识符只能包含ASCII字母数字和连字符[0-9A-Za-z-]。标识符不得为空。确定版本优先级时,应忽略构建元数据。因此,只有版本元数据不同的两个版本具有相同的优先级。例如:1.0.0-alpha + 001、1.0.0 + 20130313144700、1.0.0-beta + exp.sha.5114f85。
您的版本将变成x.y.z(-rc)+[date+buildid]