【问题标题】:Nuget version restrictionsNuget 版本限制
【发布时间】:2019-05-13 07:59:13
【问题描述】:

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

2018-12-12T08:44:02.8053309Z ##[error]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-rc9.9.9.9812129999-rc 无效,这是在哪里指定的? (这是数字大小限制而不是字符串长度)

【问题讨论】:

  • NuGet 的NuGetVersion code is here。您可以看到构造函数采用ints,因此您在版本的数字部分中输入的任何值都需要适合int。如果错误消息不明确,您可以(报告问题)[github.com/NuGet/Home/issues],以便他们改进这种情况下的错误消息。
  • 谢谢,我之前确实在找那个 :)

标签: nuget azure-devops nuget-package semantic-versioning


【解决方案1】:

取自 Microsoft Docs 上的 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
  • 版本有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 找到语义版本控制规范。我想你对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]

【讨论】:

  • 嘿@rickvdbosch,这不是我们想要的,版本应该同时具有 x.y.z(规范版本)和 date+buildid(这是我们拥有的)。它与预发布部分无关。
  • 看看我更新的答案:spec-item10 为您提供了添加元数据的空间,例如我的答案末尾的示例:x.y.z(-rc)+[date+buildid]
  • 我知道元数据但Build metadata SHOULD be ignored when determining version precedence. Thus two versions that differ only in the build metadata, have the same precedence.
  • 您可以将日期作为预发布标签,我认为这更符合 SemVer 的设计/目标。
  • 或者如果您不使用第三段,则将日期与时间分开并使用x.y.date.time+metadata,尽管严格来说这不是 semver 并且依赖于 NuGet 实现的一个怪癖,因为他们需要也支持System.Version风格a.b.c.d版本。
猜你喜欢
  • 2016-09-08
  • 1970-01-01
  • 2014-11-14
  • 2016-07-21
  • 2014-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多