Nuget Versioning是否忽略了版本号SemVer的+符号



参考:Nuget版本控制SemVer

nuget版本控制文档中写道:

SemVer还为那些创建日常或连续构建的人引入了构建号的概念。这在公共NuGet.org库中不受支持。

它说nuget.org画廊不支持它,但我想知道nuget.exe -update-install或VS中的包控制台是如何处理它的…

看看Nuget代码库中的SemanticVersion.cs。这提供了以下regex来验证所提供的版本。如果正则表达式不匹配,则版本无效:

new Regex(@"^(?<Version>d+(s*.s*d+){0,3})(?<Release>-[a-z][0-9a-z-]*)?$", 
            RegexOptions.Compiled 
          | RegexOptions.IgnoreCase 
          | RegexOptions.ExplicitCapture);

预发布字符串的格式必须严格以短划线开始,然后是字母,然后是短划线和字母数字的任何组合。不允许使用+.

尝试使用除有效版本之外的任何其他版本pack,您将获得:

Attempting to build package from 'ConsoleApplication1.csproj.nuspec'.
'1.0.1+421.500' is not a valid version string. 
Parameter name: version

如果你以某种方式得到了一个版本无效的包,那么nuget打包过程一定被绕过了,我只能假设尝试推送它会产生不可预测的结果。

最新更新