为什么在.net中的system.version定义为major.minor.build.revision?几乎每个人(包括我)似乎都同意修订属于第三名,“构建”或您想称之为的任何东西属于最后。

Microsoft是否甚至以这种偶然的方式使用数字,例如3.5.3858.2,还是名称本身只是向后?例如,如果您要使用订单Major.minor.build.revision编写自己的版本类,那么在转换为系统时交换最后两个组件是否适当向后吗?

有帮助吗?

解决方案

我认为混乱是最认为“修订”和 微软做什么:

  • 建造: 构建数的差异代表同一源的重新编译。由于处理器,平台或编译器会更改,这将是合适的。

  • 修订: 具有相同名称,专业和次要版本数量但不同修订的组件旨在完全互换。这将是适当的,可以在先前发布的组件中修复安全孔。

安全固定角度可能对他们来说可能更为普遍,似乎是将其放在最后一个位置的一个不错的理由,因为“最少”的变化。

其他提示

我意识到我要晚点参加聚会,但是我想分享我的二手构建和修订顺序“错误”。他们在 错误的 命令,但他们不在 任何 命令。

组装的版本(归结为大量)是Mavinor.minor。从上述 关联, 微软说:“仅因构建或修订编号而异的组件的后续版本被认为是先前的hotfix更新 版本。” [我的重点

建造 代表同一来源的重新编译。这 修订 代表一个代码更改,但可以与相同[Major.minor]版本的其他修订版完全互换。但是两者都不优先。

因此,总而言之,不要将其视为:

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

但反而:

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

Microsoft是否以这种偶然的方式使用数字,例如3.5.3858.2

如果让它默认,例如指定 [assembly: AssemblyVersion("1.1.*")], ,然后每天第三个数字增加,第四个数字是自午夜以来的秒数,除以两个(如果一天内有多个构建,则可以消除歧义)。

几乎每个人(包括我)似乎都同意修订属于第三名,“构建”或您想称之为的任何东西属于最后。

微软似乎正在使用“构建”作为“ day”的同义词:也许这与“每日构建”的想法有关;因此,“修订”是(每日)构建的另一个版本。

迟到的答案,但我觉得其他答案可以稍微扩展。

术语“构建”和“修订”只是Microsoft术语。 System.Version类不在乎您的分配方式。

至于切换零件的顺序以匹配您自己的术语,我会说您基本上应该完全忽略这些单词,而是考虑系统。 真的 定义:

  • 可以解析和生成的字符串格式:

    major.minor[.build[.revision]]
    

    这意味着,如果您习惯将自己的版本格式为XYZW,那么您应该以这种方式实例化版本类:

    new Version(x, y, z, w)
    

    任何其他参数顺序都不匹配parse()和toString()会做的。如果您切换Z和W,则ToString()将输出XYWZ

  • 一种 版本比较和排序顺序, ,首先将版本首先按专业排序,然后由次要进行,然后构建,然后是我们大多数人所期望的。也就是说,1.2.5晚于1.2.3.7。

    因此,如果您将版本字符串样式为1.2.6.4,并希望将其视为较新的版本,那么请不要切换版本构造函数中的零件顺序。

简而言之 - 虽然大专业/次要/构建/修订单词可能会提出一个线索,即考虑变化的数量应增加数字,但术语对实际使用方式的影响很小。格式和排序是重要的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top