.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 后的第三个补丁。

生命周期

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

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 日1
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 日2
7.0.1xx 17.4 11 月 22 日 5 月 24 日1
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 日2
8.0.1xx 17.8 2023 年 11 月 待定
8.0.2xx 17.93 2024 年 2 月 TBD
8.0.3xx 17.1 5 月 24 日 TBD

注意

仅在 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 6.0.300、7.0.200 和 8.0.200 需要较新的 Visual Studio 版本。 有关详细信息,请参阅支持规则

Visual Studio 2019 生命周期

Visual Studio 2022 生命周期

目标和支持规则

从 .NET SDK 7.0.100 和 .NET SDK 6.0.300 开始,已实施关于给定版本的 .NET SDK 将在哪个版本的 MSBuild 和 Visual Studio 中运行的策略。 该策略为:

  • 每个新的 TargetFramework 都需要新的 Visual Studio 版本或新的 dotnet 版本。
  • 支持新 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.100 17.0 16.11 Net5.0 Net6.0
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

注意

下表描述了从 .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

参考