首页 文章

Nuget 版本限制

提问于
浏览
0

我正在使用 Nuget 4.3.0.4406打包一个版本为5.2.29.181212.8244-RC的程序集,但我得到了

2018-12-12T08:44:02.8053309Z ## [3] nuget 命令失败,退出 code(1)和错误('5.2.29.181212.8244-RC'不是有效的版本字符串.参数名称:value)

版本控制不符合 semver,但 Nuget 提出了限制,而且不清楚哪个......?这是否意味着 Nuget 不仅支持 SemVer 而且强制执行它?我找到了这个,但我不确定它们对SpecialVersion的含义是什么?

基本上我只想要x.y.z.[date+buildid](-rc),其中x.y.z与规范版本绑定,因此不能省略(我们不拥有该版本)。

更新

  • 9.9.9.1812129999-rc有效,但9.9.9.18121299999-rc9.9.9.9812129999-rc没有,这是指定的? (这是数字大小限制而不是字符串长度)

1 回答

  • 2

    摘自 Microsoft Docs 上的NuGet 包版本控制参考

    使用 NuGet 4.3.0 和 Visual Studio 2017 版本 15.3,NuGet 支持语义版本控制 2.0.0.

    旧客户端不支持 SemVer v2.0.0 的某些语义。如果以下任一陈述为真,NuGet 认为包版本是 SemVer v2.0.0 特定的:

    • pre-release 标签是 dot-separated,例如 1.0.0-alpha.1

    • 该版本有 build-metadata,例如 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 Versioning Specification。我想你对spec-item10特别感兴趣:

    构建元数据可以通过在补丁或 pre-release 版本之后紧跟附加加号和一系列点分隔标识符来表示。标识符必须只包含 ASCII 字母数字和连字符[7]。标识符绝不能为空。确定版本优先级时,应该忽略构建元数据。因此,仅在构建元数据方面不同的两个版本具有相同的优先级。示例:1.0.0-alpha 001,1.0.0 20130313144700,1.0.0-beta exp.sha.5114f85。

    你的版本会像x.y.z(-rc)+[date+buildid]

相关问题