首页 > 解决方案 > .NET 程序集版本号

问题描述

.NET API 的文档说完整版本号由四个部分组成:

少校_ 未成年人建立. 修订,其中

Build:内部版本号的差异表示对相同源的重新编译。当处理器、平台或编译器发生变化时,可能会使用不同的内部版本号。

修订版:具有相同名称、主要和次要版本号但不同修订版的程序集旨在完全互换。在修复先前发布的程序集中的安全漏洞的构建中,可能会使用更高的修订号。

因此,就Semantic Versioning 2.0.0而言,修订版似乎对应于PATCH版本,并且build映射到build metadata。因此,版本 1.2。.4 晚于 1.2。.3 因为它们具有相同的主要次要数字,但 1.2。.4修复了先前发布的组件中的安全漏洞xyx

但是在 ClickOnce 部署的情况下,该声明不正确。以下步骤将成功完成:

  1. 使用 Visual Studio 创建一个空的 Windows 窗体应用程序。
  2. 转到项目属性中的发布选项卡并指定发布文件夹位置。
  3. 将版本号设置为1.2.3.4.
  4. 单击立即发布按钮。
  5. 将版本更改为1.2.4.3.
  6. 单击立即发布按钮。

但是,如果您交换步骤 3 和 5,它会重现以下警告:

已发布的 1.2.4.3 版本将被旧版本 (1.2.3.4) 取代。

因此,如果版本号的构建值不同,则忽略修订值。此外,它断言版本 1.2.4.3 比 1.2.3.4 更新。

方法文档Version.CompareTo确认了这种行为:

Version 按重要性降序排列的组件 是:主要、次要、构建和修订。

但是,如果我重建旧的修补程序提交的主要次要等于最新版本的相同部分,那会是什么?CI/CD 构建计数器值将增加。因此,最新版本将比最新版本“旧”。

另一个例子是对 CI/CD 构建计数器使用模数来限制 构建值。之后UInt16.MaxValue-1计数器将“重置”为0。因此,如果未更改主要次要版本,它将产生一个比以前“旧”的版本。

因此,我怀疑是否应该使用文档中指定的版本号格式。使用major的可能后果是什么 ?未成年人修订。而是建造?是否可以要求 Microsoft 进行文档审查?

标签: .net.net-coreversionversioning

解决方案


推荐阅读