.NET SDK, MSBuild, and Visual Studio versioning
The versioning of the .NET SDK and how it relates to Visual Studio and MSBuild can be confusing. MSBuild versions with Visual Studio, but is also included in the .NET SDK. The SDK has a minimum version of MSBuild and Visual Studio that it works with, and it won't load in a version of Visual Studio that's older than that minimum version.
Versioning
The first part of the .NET SDK version matches the .NET version that it includes, runs on, and targets by default. The feature band starts at 1 and increases for each quarterly Visual Studio minor release. The patch version increments with each month's servicing updates.
For example, version 7.0.203 ships with .NET 7, is the second minor Visual Studio release since 7.0.100 first came out, and is the third patch since 7.0.200 released.
Lifecycle
The support timeframe for the SDK typically matches that of the Visual Studio version it's included in.
Expand to see out-of-support .NET versions
SDK version | MSBuild/Visual Studio version | Ship date | Lifecycle |
---|---|---|---|
2.1.5xx | 15.9 | Nov '18 | Aug '21 |
2.1.8xx | 16.2 (No VS) | July '19 | Aug '21 |
3.1.1xx | 16.4 | Dec '19 | Oct '21 |
3.1.4xx | 16.7 | Aug '20 | Dec '22 |
5.0.1xx | 16.8 | Nov '20 | Mar '21 |
5.0.2xx | 16.9 | March '21 | May '22 |
5.0.3xx | 16.10 | May '21 | Aug '21 |
5.0.4xx | 16.11 | Aug '21 | May '22 |
7.0.1xx | 17.4 | Nov '22 | May '24 |
7.0.2xx | 17.53 | Feb '23 | May '23 |
7.0.3xx | 17.6 | May '23 | May '24 |
7.0.4xx | 17.7 | Aug '23 | May '24 |
Supported .NET versions
SDK version | MSBuild/Visual Studio version | Ship date | Lifecycle |
---|---|---|---|
6.0.1xx | 17.0 | Nov '21 | Nov '241 |
6.0.2xx | 17.1 | Feb '22 | May '22 |
6.0.3xx | 17.23 | May '22 | Oct '23 |
6.0.4xx | 17.3 | Aug '22 | Nov '242 |
8.0.1xx | 17.8 | Nov '23 | Nov '251 |
8.0.2xx | 17.93 | Feb '24 | May '24 |
8.0.3xx | 17.10 | May '24 | TBD |
8.0.4xx | 17.11 | Aug '24 | Nov '252 |
9.0.1xx | 17.12 | Nov '24 | May '261 |
Note
Targeting net6.0
is officially supported in Visual Studio 17.0+ only.
Targeting net7.0
is officially supported in Visual Studio 17.4+ only.
Targeting net8.0
is officially supported in Visual Studio 17.8+ only.
1 .1xx .NET SDK feature bands are supported throughout the lifecycle of major .NET versions. During the extended support period, support is limited to security fixes and minimal high-priority non-security fixes for Linux only. To learn more about the reasoning for this extended support, see Source-build support.
2 .4xx .NET SDK feature bands are supported for the life of the matching runtime as stand-alone installs.
3 6.0.300, 7.0.200, and 8.0.200 require newer Visual Studio versions. For more information, see the support rules.
Targeting and support rules
Starting with .NET SDK 7.0.100 and .NET SDK 6.0.300, a policy has been put into place regarding which versions of MSBuild and Visual Studio a given version of the .NET SDK will run in. The policy is:
- Each new TargetFramework requires a new Visual Studio version or a new
dotnet
version. - The first version of Visual Studio that supports a new TargetFramework becomes a floor for the feature bands of that SDK for Roslyn API surface, MSBuild targets, source generators, analyzers, and so on.
- The first version of a new .NET SDK that supports a new TargetFramework can still be used with the prior version of Visual Studio to allow one quarter for tooling and infrastructure (for example, actions and pipelines) to migrate.
SDK | Visual Studio version the SDK ships with |
Minimum Visual Studio version | Max TargetFramework in minimum Visual Studio version |
Max TargetFramework in dotnet |
---|---|---|---|---|
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.10 | 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 |
Note
The table depicts how these versioning rules will be applied going forward, starting with .NET SDK 7.0.100 and .NET SDK 6.0.300. It also depicts how the policy would have applied to previously shipped versions of the .NET SDK, had it been in place then. However, the requirements for previous versions of the SDK don't change—that is, the minimum required version of Visual Studio for .NET SDK 6.0.100 or 6.0.200 remains 16.10.
1 A breaking change in 7.0.300 for Blazor and Razor development requires Visual Studio version 17.6 or newer. For more information, see dotnet/razor issue 8718.
To ensure consistent tooling, you should use dotnet build
rather than msbuild
to build your application when possible.
Preview versioning
Major versions of the .NET SDK are typically released within a few days of a Visual Studio preview version. While there may be other combinations that work, only the latest preview released is tested and officially supported. The following table shows which version of Visual Studio each .NET preview version was tested with prior to release.
SDK preview version | Visual Studio version |
---|---|
9.0.100 Preview 1 | 17.10 Preview 1 |
9.0.100 Preview 2 | 17.10 Preview 2 |
9.0.100 Preview 3 | 17.10 Preview 3 |
9.0.100 Preview 4 | 17.11 Preview 1 |
9.0.100 Preview 5 | 17.11 Preview 2 |
9.0.100 Preview 6 | 17.11 Preview 3 |
9.0.100 Preview 7 | 17.12 Preview 1 |
9.0.100 RC 1 | 17.12 Preview 2 |
9.0.100 RC 2 | 17.12 Preview 3 |