.NET 的版本控制方式概述

.NET 运行时和 .NET SDK 添加新功能的频率不同。 通常来说,SDK 的更新频率比运行时高。 本文介绍运行时和 SDK 版本号。

.NET 每年 11 月都会发布一个新的主版本。 偶数版本(如 .NET 6 或 .NET 8)长期受支持 (LTS)。 奇数版本在下一个主版本发布之前受支持。 .NET 的最新版本是 .NET 6。

版本控制详细信息

.NET 运行时具有用于版本控制的 major.minor.patch 方法,且该方法遵循语义版本控制

但是,.NET SDK 不遵循语义版本控制。 .NET SDK 发布速度更快,其版本必须显示相应的运行时和 SDK 自己的次要版本及补丁版本。

.NET SDK 版本号的前两个位置与随之一起发布的 .NET 运行时版本一致。 每个版本的 SDK 都可以为此版本或任何更低版本的运行时创建应用程序。

SDK 版本号的第三个位置同时传达次要编号和修补程序编号。 次要版本乘以 100。 最后两位数代表修补程序号。 次要版本 1,修补程序版本 2 将表示为 102。 例如,下面是运行时和 SDK 版本号可能出现的序列:

更改 .NET 运行时 .NET SDK (*)
初始版本 5.0.0 5.0.100
SDK 修补程序 5.0.0 5.0.101
运行时和 SDK 修补程序 5.0.1 5.0.102
SDK 功能更改 5.0.1 5.0.200

注意:

  • 如果在运行时功能更新之前,SDK 有 10 个功能更新,则版本号将滚动到 1000 系列。 版本 5.0.900 之后将是版本 5.0.1000。 应该不会出现这种情况。
  • 不会出现为发布功能的 99 修补程序版本。 如果某版本接近此数字,则会强制发布功能。

可在 dotnet/设计 存储库中查看初始建议的更多详细信息。

语义化版本控制

.NET 运行时大致遵循语义版本控制 (SemVer),采用 MAJOR.MINOR.PATCH 版本控制,通过版本号的各部分来描述更改程度和类型。

MAJOR.MINOR.PATCH[-PRERELEASE-BUILDNUMBER]

可选的 PRERELEASEBUILDNUMBER 部分永远不会成为受支持版本的一部分,并且将仅存在于夜间版本、来自源目标的本地版本,以及不受支持的预览版本中。

了解运行时版本号更改

  • MAJOR 每年递增一次,可能包含:

    • 产品或新产品方向发生的重大更改。
    • API 引入的中断性变更。 接受中断性变更存在较大障碍。
    • 采用了现有依赖项的较新 MAJOR 版本。

    主版本每年发布一次,偶数版本是长期支持的 (LTS) 版本。 使用此版本控制方案的第一个 LTS 版本是 .NET 6。 最新的非 LTS 版本是 .NET 5。

  • MINOR 在下列情况时递增:

    • 添加了公共 API 外围应用。
    • 添加了新行为。
    • 采用了现有依赖项的较新 MINOR 版本。
    • 引入了新依赖项。
  • PATCH 在下列情况时递增:

    • 进行了 Bug 修复。
    • 添加了对较新平台的支持。
    • 采用了现有依赖项的较新 PATCH 版本。
    • 任何其他不符合上述情况的更改。

存在多处更改时,单个更改影响的最高级别元素会递增,并将随后的元素重置为零。 例如,当 MAJOR 递增时,MINOR.PATCH 将重置为零。 当 MINOR 递增时,PATCH 将重置为零,而 MAJOR 保持不变。

文件名中的版本号

为 .NET 下载的文件带有版本,例如 dotnet-sdk-5.0.301-win10-x64.exe

预览版

预览版向版本号追加了 -preview.[number].[build]。 例如 6.0.0-preview.5.21302.13

服务版本

在版本发布后,版本分支通常停止生成日常版本,而开始生成服务版本。 服务版本向版本追加了 -servicing-[number]。 例如 5.0.1-servicing-006924

请参阅