这是我的看法。我可能完全错了,但正如你所问的理由,这就是我看到版本号及其使用的方式。
版本号实际上并不是数字,它们实际上只是具有一些语义和基于该语义的比较逻辑的标识符。该逻辑的一部分是能够检查两个版本是否兼容。
从这个意义上说,2.0代表任何2.0衍生物,或2.0.*.*。当您将关系运算符与版本一起使用时,您实际上想要回答兼容性问题,其中的>=意思是is backwards compatible with.
所以,V1 >= V2意思是is V1 backwards compatible with V2。
2.0.0.0 >= 2.0.*.*-> true,2.0.0.0应该能够在支持声称支持的系统上运行2.0.*.*
2.0.*.* >= 2.0.0.0-> false,因为并非每个2.0.*.*版本都保证兼容2.0.0.0
[编辑:回答评论]
那么2.0.*.*至少不应该等于2.0.0.0?因为(用你的话来说)“2.0.0.0应该能够在支持声称支持的系统上运行2.0.*.*”
我认为让您感到困惑的是,我们选择2.0.0.0了直观地理解为基本版本的版本,因此在逻辑上等同于2.0.*.*,但事实并非如此。
它不应该相等,因为2.0.*.*任何2.0 版本(不仅仅是选择的特定版本),因此是ANY_20_VERSION == 2000_VERSION错误的。换句话说,这意味着任何2.0导数都应该能够满足关系(不仅仅是选择的特定关系),并且显然2.0.0.1与2.0.0.0