Nuget'2.0.20180607160057-jenkins'不是有效的版本字符串

时间:2018-06-07 14:38:54

标签: nuget version push

我有一个scipted nuget push,拒绝推送我的nuget包:

"%NUGET%" push *.nupkg -Source "%NUGETREPO%"

我遇到的错误是:

'2.0.20180607160057-jenkins' is not a valid version string.
Parametername: value

1 个答案:

答案 0 :(得分:0)

在写这个问题的时候,我把兔子洞挖到了一个明显的目的。

相关的实施在这里 https://github.com/NuGet/NuGet2/ ... /src/Core/SemanticVersion.cs

^(?<Version>\d+(\s*\.\s*\d+){0,3})(?<Release>-[a-z][0-9a-z-]*)?$
^(?<Version>\d+(\.\d+){2})(?<Release>-[a-z][0-9a-z-]*)?$

当我将2.0.20180607160057-jenkins提供给online Regex Tester时 该字符串通过两个正则表达式测试。在线正则表达式甚至允许我切换Ignore CaseExplicit Capture

下一个更深层次是

Version.TryParse(match.Groups["Version"].Value, out versionValue)

System.Version.TryParse已记录在案here。 没有版本可以小于0或大于Int32.MaxValue。 所以这个特殊的失败归结为

2147483647 < 20180607160057
实际上相当直观 - 我需要一个不同的方案来为nuget生成补丁级别。