При написании вопроса я вырыл кроличью нору до очевидного конца.
Соответствующая реализация здесь 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
в онлайн тестер регулярных выражений Строка проходит оба теста регулярных выражений.Онлайн-регулярные выражения даже позволяют мне переключать Ignore Case
и Explicit Capture
.
Следующий более глубокий уровень находится в
Version.TryParse(match.Groups["Version"].Value, out versionValue)
System.Version.TryParse
задокументировано здесь ,Никакая версия не может быть меньше 0
или больше Int32.MaxValue
.Так что этот конкретный сбой сводится к
2147483647 < 20180607160057
довольно интуитивно на самом деле - и мне нужна другая схема для генерации уровня патча для nuget.