Nuget Versioning是否忽略内置编号SemVer的符号?

时间:2013-02-08 18:32:54

标签: version nuget nuget-package

价: Nuget Versioning SemVer

nuget版本控制文档如下:

  

SemVer还为那些创建日常或连续构建的人介绍了构建号的概念。公共NuGet.org图库不支持此功能。

它说它在nuget.org图库中不受支持,但我特别想知道nuget.exe -update-install或VS中的Package Console如何处理它......

1 个答案:

答案 0 :(得分:3)

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

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打包过程并且我只能假设尝试推送它会产生不可预测的结果。