.NET SDK、MSBuild 和 Visual Studio 版本控制

.NET SDK 的版本控制以及它与 Visual Studio 和 MSBuild 的关系可能会造成混淆。 MSBuild 版本虽与 Visual Studio 配合使用,但也包含在 .NET SDK 中。 SDK 有最低版本的 MSBuild 和 Visual Studio 可供使用,并且不会在早于该最低版本的 Visual Studio 版本中加载。

版本控制

默认情况下,.NET SDK 的第一部分与其包含、运行和面向的 .NET 版本相匹配。 功能带从 1 开始,并在每季度随 Visual Studio 次要版本而增加。 补丁版本随每个月的服务更新递增。

例如,版本 7.0.203 随 .NET 7 一起提供,是第二个 Visual Studio 次要版本,因为 7.0.100 是第一次出现,并且是自发布 7.0.200 后的第三个补丁。

Visual Studio 的安装包括一个相应版本的 .NET SDK。 如果您更新 Visual Studio 实例,Visual Studio 安装的 .NET SDK 也会更新,包括跨 .NET SDK 功能版本和主要版本的更新。 如果要使用与 Visual Studio 安装的内容不同的 .NET SDK,可以从 .NET 下载页安装它,Visual Studio 升级不会触及该版本。 你负责从此更新 .NET SDK 的副本。

注意

.NET SDK 支持面向 .NET 的下层版本,因此我们建议始终更新 .NET SDK 以及 Visual Studio 版本。

生命周期

SDK 的支持时间范围通常与其中包含的 Visual Studio 版本一致。

展开以查看不受支持的 .NET 版本
SDK 版本 MSBuild/Visual Studio 版本 发货日期 生命周期
2.1.5xx 15.9 11 月 18 日 8 月 21 日
2.1.8xx 16.2 (No VS) 7 月 19 日 8 月 21 日
3.1.1xx 16.4 12 月 19 日 10 月 21 日
3.1.4xx 16.7 8 月 20 日 12 月 22 日
5.0.1xx 16.8 11 月 20 日 3 月 21 日
5.0.2xx 16.9 3 月 21 日 5 月 22 日
5.0.3xx 16.10 5 月 21 日 8 月 21 日
5.0.4xx 16.11 8 月 21 日 5 月 22 日
6.0.1xx 17.0 11 月 21 日 11 月 24 日
6.0.2xx 17.1 2 月 22 日 5 月 22 日
6.0.3xx 17.23 5 月 22 日 10 月 23 日
6.0.4xx 17.3 8 月 22 日 11 月 24 日
7.0.1xx 17.4 11 月 22 日 5 月 24 日
7.0.2xx 17.53 2 月 23 日 5 月 23 日
7.0.3xx 17.6 5 月 23 日 5 月 24 日
7.0.4xx 17.7 8 月 23 日 5 月 24 日

支持的 .NET 版本

SDK 版本 MSBuild/Visual Studio 版本 发货日期 生命周期
8.0.1xx 17.8 2023 年 11 月 11 月 25 日1
8.0.2xx 17.93 2024 年 2 月 5 月 243 日
8.0.3xx 17.1 5 月 24 日 待定
8.0.4xx 17.11 8 月 24 日 11 月 25 日2
9.0.1xx 17.12 11 月 24 日 5 月 26 日1

注意

仅在 Visual Studio 17.0+ 中正式支持将 net6.0 用作目标。 仅在 Visual Studio 17.4+ 中正式支持将net7.0用作目标。 仅在 Visual Studio 17.8+ 中正式支持将 net8.0 用作目标。

1 .1xx .NET SDK 功能带在主要 .NET 版本的整个生命周期内都受支持。 在外延支持期内,仅支持 Linux 的安全修补程序和最小高优先级非安全修补程序。 要详细了解此外延支持的原因,请参阅源生成支持

2 .4xx .NET SDK 功能区段作为独立安装在匹配运行时的生命周期内受到支持。

3 8.0.200 需要更新的 Visual Studio 版本。 有关详细信息,请参阅支持规则

Visual Studio 2019 生命周期

Visual Studio 2022 生命周期

目标和支持规则

以下策略指示将在哪个版本的 MSBuild 和 Visual Studio 中运行给定版本的 .NET SDK:

  • 每个新的 TargetFramework 都需要新的 Visual Studio 版本或新的 版本。
  • 支持新 TargetFramework 的 Visual Studio 的第一个版本将成为该 SDK for Roslyn API 表面、MSBuild 目标、源生成器、分析器等功能带的基础。
  • 支持新 TargetFramework 的新 .NET SDK 的第一个版本仍可与 Visual Studio 的先前版本一起使用,以允许四分之一的工具和基础结构(例如,操作和管道)进行迁移。
SDK Visual Studio 版本
(SDK 附带的)
最低 Visual Studio 版本 最低 Visual Studio 版本中
的最大 TargetFramework
dotnet 中的最大 TargetFramework
6.0.200 17.1 17.0 Net6.0 Net6.0
6.0.300 17.2 17.0 Net6.0 Net6.0
6.0.400 17.3 17.0 Net6.0 Net6.0
7.0.100 17.4 17.3 Net6.0 Net7.0
7.0.200 17.5 17.4 Net7.0 Net7.0
7.0.300 17.6 17.41 Net7.0 Net7.0
7.0.400 17.7 17.4 Net7.0 Net7.0
8.0.100 17.8 17.7 Net7.0 Net8.0
8.0.200 17.9 17.8 Net8.0 Net8.0
8.0.300 17.1 17.8 Net8.0 Net8.0
8.0.400 17.11 17.8 Net8.0 Net8.0
9.0.100 17.12 17.11 Net8.0 Net9.0

注意

下表描述了如何应用这些版本控制规则,从 .NET SDK 7.0.100 和 .NET SDK 6.0.300 开始。 它还描述了策略如何应用于之前附带的 .NET SDK 版本(如果当时已就位)。 但是,先前版本的 SDK 的要求未发生更改 - 也就是说,用于 .NET SDK 6.0.100 或 6.0.200 的 Visual Studio 的最低所需版本仍是 16.10。

1 Blazor 和 Razor 开发的 7.0.300 中的中断性变更需要 Visual Studio 版本 17.6 或更高版本。 有关详细信息,请参阅dotnet/roslyn 问题 8718

为了确保工具的一致性,应尽可能使用 dotnet build 而不是 msbuild 来生成应用程序。

预览版本控制

.NET SDK 的主要版本通常在 Visual Studio 预览版后的几天内发布。 虽然可能存在其他组合,但仅测试并正式支持最新发布的预览版。 下表显示了每种 .NET 预览版在发布之前进行测试的 Visual Studio 版本。

SDK 预览版 Visual Studio 版本
9.0.100 预览 1 17.10 预览 1
9.0.100 预览 2 17.10 预览 2
9.0.100 预览 3 17.10 预览 3
9.0.100 预览版 4 17.11 预览版 1
9.0.100 预览版 5 17.11 预览版 2
9.0.100 预览版 6 17.11 预览版 3
9.0.100 预览版 7 17.12 预览版 1
9.0.100 RC 1 17.12 预览版 2
9.0.100 RC 2 17.12 预览版 3
9.0.100 GA 17.12 GA

参考