.NET Code Tips

Free .NET developer tool

.NET Versions, Support Dates & Target Frameworks

Which .NET versions still get security fixes and until when, the latest patch and SDK for each, and what every target framework moniker gives you: C# version, #if symbols and .NET Standard support.

Runs entirely in your browser — nothing you paste is uploaded.

Latest release.NET 10.0LTS · runtime 10.0.12 · SDK 10.0.401
Latest LTS.NET 10.0Supported until Nov 14, 2028

.NET and .NET Core support

From Microsoft's release metadata, updated Oct 11, 2026. Status is computed for today's date.

VersionTypeStatusReleasedEnd of supportLatest runtimeLatest SDK
.NET 11.0STSPreview—Not announced11.0.0-rc.1.26425.12811.0.100-rc.1.26425.128
.NET 10.0LTSSupported2.1 years leftNov 11, 2025Nov 14, 202810.0.1210.0.401
.NET 9.0STSEnding soon30 days leftNov 12, 2024Nov 10, 20269.0.209.0.318
.NET 8.0LTSEnding soon30 days leftNov 14, 2023Nov 10, 20268.0.318.0.425

LTS (even-numbered) versions get three years of support, STS (odd-numbered) versions two. Patches ship on Patch Tuesday, the second Tuesday of each month. "Ending soon" means less than six months left.

.NET Framework support

.NET Framework 4.5.2 and later is a component of Windows and is supported as long as the Windows version it's installed on, except where a date is announced.

VersionTFMStatusReleasedNotes
4.8.1net481SupportedAug 9, 2022Follows the Windows lifecycle; the last .NET Framework version.
4.8net48SupportedApr 18, 2019Follows the Windows lifecycle.
4.7.2net472SupportedApr 30, 2018Follows the Windows lifecycle.
4.7.1net471SupportedOct 17, 2017Follows the Windows lifecycle.
4.7net47SupportedApr 11, 2017Follows the Windows lifecycle.
4.6.2net462Ending soonAug 2, 2016Support ends January 12, 2027.
4.5.2 – 4.6.1net452–net461Out of supportMay 5, 2014Ended April 26, 2022.
3.5 SP1net35SupportedAug 11, 2008Supported until January 9, 2029.

Target framework explorer

Pick a target framework moniker to see what it means for your project.

Moniker
net10.0
Product
.NET 10.0
Support
Supported
Default C# version
C# 14
Can reference .NET Standard
Up to 2.1

Implicit preprocessor symbols

Defined by the SDK for this target, in addition to DEBUG and TRACE.

  • NET
  • NET10_0
  • NETCOREAPP
  • NET5_0_OR_GREATER
  • NET6_0_OR_GREATER
  • NET7_0_OR_GREATER
  • NET8_0_OR_GREATER
  • NET9_0_OR_GREATER
  • NET10_0_OR_GREATER
  • NETCOREAPP1_0_OR_GREATER
  • NETCOREAPP1_1_OR_GREATER
  • NETCOREAPP2_0_OR_GREATER
  • NETCOREAPP2_1_OR_GREATER
  • NETCOREAPP2_2_OR_GREATER
  • NETCOREAPP3_0_OR_GREATER
  • NETCOREAPP3_1_OR_GREATER
MyProject.csproj
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net10.0</TargetFramework>
  </PropertyGroup>
</Project>
Multi-targeting
<TargetFrameworks>net10.0;net8.0</TargetFrameworks>

// In code, branch on the implicit symbols:
#if NET10_0_OR_GREATER
    // net10.0 or later in the same family
#else
    // the other targets
#endif

.NET Standard compatibility

The minimum version of each platform that can use a library targeting that .NET Standard version. .NET 5 and later implement all of them.

.NET Standard.NET / .NET Core.NET FrameworkMonoUnity
netstandard2.1.NET Core 3.0, .NET 5+Not supported6.42021.2
netstandard2.0.NET Core 2.04.6.1 (4.7.2+ recommended)5.42018.1
netstandard1.6.NET Core 1.04.6.14.62018.1
netstandard1.3.NET Core 1.04.64.62018.1
netstandard1.2.NET Core 1.04.5.14.62018.1
netstandard1.1.NET Core 1.04.54.62018.1
netstandard1.0.NET Core 1.04.54.62018.1

Which version should you be on?

For a new application, use the newest release. STS releases get the same monthly patches as LTS releases while they're supported, and since .NET 9 they're supported for two years. If upgrading every year isn't realistic, stay on the latest LTS and move to the next LTS when it ships. Either way, keep up with the monthly patch releases: an app on an old patch of a supported version is missing the same security fixes as one on an unsupported version.

Checking what's installed

dotnet --list-runtimes and dotnet --list-sdks show what's on a machine, and dotnet --info shows which SDK a folder will use. A global.json file pins the SDK version for a repository. The SDK version doesn't decide the runtime: that's set by <TargetFramework>.

Frequently asked questions

What is the difference between LTS and STS releases of .NET?

A new major version of .NET ships every November. Even-numbered versions (.NET 8, 10) are Long Term Support and get three years of patches. Odd-numbered versions (.NET 9, 11) are Standard Term Support and, since .NET 9, get two years. Both receive the same monthly servicing updates while supported, so STS releases are just as production-ready, only shorter-lived.

Which target framework should a new class library use?

Target the oldest supported .NET you need, such as net8.0, or multi-target, as in <TargetFrameworks>net10.0;net8.0</TargetFrameworks>. Use netstandard2.0 only if the library must also load in .NET Framework 4.6.2+ apps, Unity or older Xamarin projects. .NET Standard 2.1 is rarely worth targeting because .NET Framework never implemented it.

Can I use a newer C# version with an older target framework?

Often, yes: set <LangVersion> in the project file. Features that are pure syntax, such as file-scoped namespaces, switch expressions and raw string literals, work on any target. Features that need runtime or library support, such as default interface methods, static abstract interface members and some ref struct features, fail to compile or need polyfill types on older frameworks. That’s why the SDK defaults to the C# version the framework was released with.

What does the support end date mean for my app?

After that date Microsoft stops shipping security fixes for that version, so newly found vulnerabilities in the runtime stay unpatched in your app. Most companies’ policies, and many compliance regimes, require moving to a supported version before then. Also keep up with patch releases while a version is supported: they ship on Patch Tuesday, the second Tuesday of each month.