为什么.NET中的System.Version定义为Major.Minor.Build.Revision?

为什么.NET中的System.Version定义为Major.Minor.Build.Revision? 几乎每个人(包括我)似乎都认同修订属于第三位,而“build立”或任何你想称之为最后的。

微软甚至会以这种随意的方式使用这些数字,例如3.5.3858.2,还是名字本身就是倒退? 例如,如果您要编写您自己的版本类与订单Major.Minor.Build.Revision,在转换为System.Version时交换最后两个组件,或者你忽略它,只是假装名称是倒退?

我认为这个混乱是大多数人认为是“修订”的原因,而微软的做法是 :

  • 构build:构build编号的差异表示重新编译同一来源。 由于处理器,平台或编译器的改变,这将是适当的。

  • 修订:具有相同名称,主版本号和次版本号但不同版本的程序集旨在完全互换。 这将适用于修复之前发布的组件中的安全漏洞。

对于他们来说,安全固定angular度可能更为普遍,似乎是把它放在最后的一个体面的理由,作为“最小的”变化。

我意识到自己要晚一点来参加聚会,但是我想分享一下我的两位同学为什么构build和修改的顺序是“错误的”。 这不是他们顺序错误 ,而是他们没有任何顺序。

Major.Minor是一个程序集的版本。 从前面提到的链接 ,微软说:“随后版本的程序集只有构build版本或修订版本号才会被认为是以前版本的修补程序更新”。 [我的重点]

Build代表重新编译的源码。 修订代表代码更改,但与同一[Major.Minor]版本的其他修订完全可互换。 但是两者都不优先。

所以,总之,不要把它想成:

 + Major | +-+ Minor | +-+ Build | +-+ Revision 

但反而:

 + Major | +-+ Minor | +-+ Build | +-+ Revision 

微软甚至会以这种随意的方式使用这些数字,例如3.5.3858.2

如果你让它默认,例如通过指定[assembly: AssemblyVersion("1.1.*")] ,那么第三个数字每天递增,第四个数字是自午夜以来的秒数除以2(以便消除歧义在一天之内build立一个以上)。

几乎每个人(包括我)似乎都认同修订属于第三位,而“build立”或任何你想称之为最后的。

微软似乎将“构build”用作“日”的同义词:也许这与“每日构build”的想法有关; 而“修订版”则是(日常版)版本的另一个版本。