Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 37 additions & 11 deletions docs/core/porting/versioning-sdk-msbuild-vs.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: .NET SDK, MSBuild, and Visual Studio versioning
description: Learn about the versioning relationship between the .NET SDK and MSBuild/VS.
description: Learn about the versioning relationship between the .NET SDK and MSBuild/Visual Studio.
author: StephenBonikowsky
ms.custom: updateeachrelease
ms.date: 10/23/2025
Comment thread
marcpopMSFT marked this conversation as resolved.
Outdated
Expand All @@ -11,12 +11,14 @@

## 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.
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 .NET SDK 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.
For example, version 7.0.203 ships with .NET 7, is the second quarterly feature band release since 7.0.100 first came out, and is the third patch since 7.0.200 released.

An installation of Visual Studio includes a single matching copy of the .NET SDK. If you update your Visual Studio instance, the .NET SDK installed by Visual Studio is also updated, including across .NET SDK feature bands and major bands. If you want to use a different .NET SDK than what's installed by Visual Studio, you can install it from the [.NET download page](https://aka.ms/dotnet/download), and Visual Studio upgrade won't touch that version. You're responsible for updating that copy of the .NET SDK from then on.

Starting in Visual Studio 18.0, there are monthly minor versions of Visual Studio but the .NET SDK will remain quarterly. The in-between Visual Studio releases will contain patch versions of the latest current .NET SDK version.
Comment thread
marcpopMSFT marked this conversation as resolved.
Outdated

> [!NOTE]
> The .NET SDK supports targeting down-level versions of .NET, so we recommend always updating your .NET SDK along with your Visual Studio version.

Expand Down Expand Up @@ -60,13 +62,14 @@
| 8.0.4xx | 17.11 | Aug '24 | Nov '26<sup>2</sup> |
| 9.0.1xx | 17.12 | Nov '24 | May '26 |
| 9.0.2xx | 17.13 | Feb '25 | May '25 |
| 9.0.3xx | 17.14 | May '25 | Nov '26 |
| 9.0.3xx | 17.14 | May '25 | Nov '26<sup>2</sup> |
Comment thread
marcpopMSFT marked this conversation as resolved.
Outdated
| 10.0.1xx | 18.0 | Nov '25 | Nov '28 |
| 10.0.2xx | 18.4 | Mar '26 | May '26 |

> [!NOTE]
> <sup>1</sup> .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](https://github.com/dotnet/source-build#support).
>
> <sup>2</sup> .4xx .NET SDK feature bands are supported for the life of the matching runtime as stand-alone installs.
> <sup>2</sup> The final .NET SDK feature bands of a major version are supported for the life of the matching runtime as stand-alone installs.
>
> [Visual Studio 2026 lifecycle](/lifecycle/products/visual-studio-2026)
>
Expand All @@ -92,6 +95,7 @@
| 9.0.200 | 17.13 | 17.12 | Net9.0 | Net9.0 |
| 9.0.300 | 17.14 | 17.12 | Net9.0 | Net9.0 |
| 10.0.100 | 18.0 | 17.14 | Net9.0 | Net10.0 |
| 10.0.200 | 18.4 | 18.0 | Net10.0 | Net10.0 |

> [!NOTE]
> The table depicts how these versioning rules are applied, 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&mdash;that is, the minimum required version of Visual Studio for .NET SDK 6.0.100 or 6.0.200 remains 16.10.
Expand All @@ -104,20 +108,42 @@

To ensure consistent tooling, you should use `dotnet build` rather than `msbuild` to build your application when possible.

## SDK and Visual Studio support matrix

While most developers use the .NET SDK bundled with their Visual Studio version, some configurations involve mismatched SDK and Visual Studio versions. We cannot ensure every Visual Studio version works with every in-support .NET SDK but rather test the most common configurations and make a best effort to ensure compatibility.

Comment thread
marcpopMSFT marked this conversation as resolved.
Outdated
### Backward and forward compatibility

- **Primary supported configuration**: Use the SDK version bundled with your Visual Studio installation
- Visual Studio 17.14 and .NET 9.0.3xx

Check failure on line 118 in docs/core/porting/versioning-sdk-msbuild-vs.md

View workflow job for this annotation

GitHub Actions / lint

Unordered list indentation

docs/core/porting/versioning-sdk-msbuild-vs.md:118:1 MD007/ul-indent Unordered list indentation [Expected: 2; Actual: 4] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md007.md
- Visual Studio 18.0 and .NET 10.0.1xx

Check failure on line 119 in docs/core/porting/versioning-sdk-msbuild-vs.md

View workflow job for this annotation

GitHub Actions / lint

Unordered list indentation

docs/core/porting/versioning-sdk-msbuild-vs.md:119:1 MD007/ul-indent Unordered list indentation [Expected: 2; Actual: 4] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md007.md
- **Backward compatibility**: Using the latest feature band of the previous SDK version (for example, 8.0.4xx in Visual Studio 17.14) is supported with best-effort compatibility. We'll determine when to backport fixes based on risk and customer impact.

Check failure on line 120 in docs/core/porting/versioning-sdk-msbuild-vs.md

View workflow job for this annotation

GitHub Actions / lint

Trailing spaces

docs/core/porting/versioning-sdk-msbuild-vs.md:120:253 MD009/no-trailing-spaces Trailing spaces [Expected: 0 or 2; Actual: 1] https://github.com/DavidAnson/markdownlint/blob/v0.40.0/doc/md009.md
Comment thread
marcpopMSFT marked this conversation as resolved.
Outdated
While older SDKs than the latest of the prior band may work, we will not test them or make an effor to ensure any compatibility.
Comment thread
marcpopMSFT marked this conversation as resolved.
Outdated
Comment thread
marcpopMSFT marked this conversation as resolved.
Outdated
- **Forward compatibility**: Using a newer SDK (for example, .NET 10 SDK in Visual Studio 17.14) is allowed without blocking, but targeting newer runtimes in older Visual Studio versions is not supported and should provide a build warning.
Comment thread
marcpopMSFT marked this conversation as resolved.
Outdated
Comment thread
marcpopMSFT marked this conversation as resolved.
Outdated

### Guidance

Our guidance is to use the SDK that came with your Visual Studio instance (or latest available in CI or Visual Studio Code) as that will always have newest features including security updates.
Comment thread
gewarren marked this conversation as resolved.
Outdated
Comment thread
marcpopMSFT marked this conversation as resolved.
Outdated

## Downlevel targeting support
Comment thread
marcpopMSFT marked this conversation as resolved.
Outdated

The .NET SDK maintains targeting support for out-of-support .NET versions. The 10.0.100 SDK can build apps targeting `net9.0` all the way down to `netcoreapp1.0`.

### Guiding principles

- **Existing support preserved**: Targeting support for out-of-support versions remains in the SDK without active removal. Customers upgrading their SDK or Visual Studio version should not have their builds broken simply by targeting an older .NET version.
Comment thread
marcpopMSFT marked this conversation as resolved.
Outdated
- **New features**: New SDK features aren't required to support out-of-support versions unless excluding such support poses considerable cost or risk.
- **Breakage fixes**: If issues arise when targeting out-of-support versions, a fix is applied based on the cost of the fix. The goal is to prevent customers from being broken on upgrade.

## Preview versioning

Major versions of the .NET SDK are typically released within a few days of a Visual Studio preview version. While there might 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 RC 1 | 17.12 Preview 2 |
| 9.0.100 RC 2 | 17.12 Preview 3 |
| 9.0.100 GA | 17.12 GA |
| 10.0.100 Preview 1 | 17.14 Preview 1 |
| 10.0.100 Preview 2 | 17.14 Preview 2 |
| 10.0.100 Preview 3 | 17.14 Preview 3 |
| 10.0.100 RC 1 | 18.0.0 Insiders (11010.61)|
| 10.0.100 RC 2 | 18.0.0 Insiders (11111.16)|
| 11.0.100 Preview 1 | 18.4.0 Insiders 1 |
Comment thread
marcpopMSFT marked this conversation as resolved.
Outdated

## Reference

Expand Down
Loading