1

阅读 SemVer 规范,这实际上并不是 SemVer 的一部分。那么 NuGet 实际调用的搜索语法是什么?

1.0  = 1.0 ≤ x
(,1.0]  = x ≤ 1.0
(,1.0)  = x < 1.0
[1.0] = x == 1.0
(1.0) = invalid
(1.0,) = 1.0 < x
(1.0,2.0) = 1.0 < x < 2.0
[1.0,2.0] = 1.0 ≤ x ≤ 2.0
empty = latest version.

另外,是否有一个 .NET 类可以处理它,以便我可以使用这种语法搜索包?

4

1 回答 1

1

Nuget 包版本控制在SemVer 1.0.0上松散地建模,此后已更新为SemVer 2.0.0,这是当前推荐的标准。虽然该工具确实接受一些非 SemVer 版本控制方案,但 OP 中包含的表显示了在 Nuget 中用作依赖版本选择器的版本范围和通配符的可接受语法。

尽管已经提出了定义范围规范的建议,但几乎没有一致意见使用什么形式以及相当可靠的论据来阻止 SemVer 参与该业务。基本上有两个主要阵营,一个建议应该使用集合表示法(Nuget 的当前语法),另一个更喜欢运算符表达式序列(例如 >=1.0.0 && <2.0.0)。最好的理由是,不同的脚本/编程语言具有不同的本地处理这些表达式的能力,并且规范不应限制工具开发人员可用的设计空间。

请注意,该表以运算符序列的形式描述了集合符号,任何绿色程序员都可以理解。在内部,大多数工具在指定范围内构建一组候选,然后应用一个或多个启发式或一组代数,或数学和启发式的某种组合来选择依赖版本。

如果您需要对此事有任何进一步的启发,请告诉我。

于 2018-01-27T21:52:01.697 回答