.NET's Annual Release Cadence
Since .NET Core unified the platform, Microsoft has shipped a new major version every November, alternating between Long-Term Support (LTS) and Standard-Term Support (STS, formerly called Current) releases. Even-numbered versions — .NET 6, .NET 8, .NET 10 — are LTS releases, supported for three years, while odd-numbered versions — .NET 7, .NET 9 — are STS releases supported for eighteen months and typically carry newer, less battle-tested features. This predictable annual rhythm lets teams plan upgrade cycles around a known calendar rather than reacting to unpredictable framework churn.
Cricket analogy: The even/odd LTS-vs-STS pattern is like a cricket board alternating a marquee, long-format Test series (LTS, heavily invested in) with a shorter, experimental T10 exhibition tournament (STS) every other year.
Recent LTS History and Support Windows
.NET 6 (released November 2021) was an LTS release supported until November 2024; .NET 8 (November 2023) is LTS supported until November 2026; .NET 10 (November 2025) is the current LTS supported until November 2028. During an LTS window, Microsoft ships regular monthly or quarterly patch releases addressing security vulnerabilities and critical bugs, but does not introduce breaking API changes. Running an unsupported, out-of-LTS version in production means no security patches are issued, which is a compliance and security risk that most enterprise governance policies explicitly forbid.
Cricket analogy: Running an out-of-support .NET version in production is like fielding without a helmet against a fast bowler — technically possible, but any governing body's safety rules would flag it immediately.
Target Framework Monikers and Upgrade Strategy
A project's .csproj declares its target via <TargetFramework>net8.0</TargetFramework>, or <TargetFrameworks>net8.0;net472</TargetFrameworks> (note the plural element) to multi-target both modern .NET and .NET Framework 4.7.2 for a library that must support legacy consumers. When planning an upgrade, run dotnet-upgrade-assistant or manually check the migration guide for breaking changes, update the TFM, resolve any obsolete API warnings, and re-run the full test suite before merging — most LTS-to-LTS upgrades (e.g., .NET 6 to .NET 8) involve stepping through the intermediate version's changes rather than jumping directly.
Cricket analogy: Multi-targeting a library for both net8.0 and net472 is like a franchise fielding a squad that can compete in both the modern T20 format and the traditional first-class format, adapting its game to whichever match it's playing.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net8.0;net472</TargetFrameworks>
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net472'">
<PackageReference Include="System.Text.Json" Version="8.0.0" />
</ItemGroup>
</Project>Check the official .NET support policy page before choosing a version for a new project. LTS releases (even-numbered) are the safe default for production systems that can't upgrade every year; STS releases suit teams that want the newest language and runtime features and can commit to upgrading every 18 months.
Running .NET 7 or .NET 9 (STS) in production past their 18-month end-of-support date leaves the app fully unpatched for security vulnerabilities. Many enterprises' compliance policies flag this automatically during dependency scanning, so track end-of-support dates on the official .NET support roadmap and schedule upgrades well in advance.
- Microsoft ships a new major .NET version every November, alternating LTS and STS release types.
- Even-numbered versions (.NET 6, 8, 10) are LTS, supported for three years.
- Odd-numbered versions (.NET 7, 9) are STS, supported for eighteen months.
- LTS releases receive regular security patches without introducing breaking API changes.
- Target Framework Monikers like net8.0 are declared in the .csproj via TargetFramework or TargetFrameworks.
- Multi-targeting (net8.0;net472) lets one library support both modern and legacy consumers.
- Upgrade step by step through intermediate versions and rerun the full test suite before merging a TFM bump.
Practice what you learned
1. Which of these is an LTS (Long-Term Support) .NET release?
2. How long is an STS (Standard-Term Support) .NET release supported for?
3. Which .csproj element is used to target multiple .NET frameworks from a single project?
4. What is a major risk of running an out-of-support .NET version in production?
5. What does dotnet-upgrade-assistant help with?
Was this page helpful?
You May Also Like
CI/CD for .NET Apps
How to build automated build, test, and deployment pipelines for .NET applications using GitHub Actions, the dotnet CLI, and containerized deployments.
.NET Core Quick Reference
A condensed reference covering essential dotnet CLI commands, LINQ/collection quick facts, and configuration patterns for everyday .NET Core development.
.NET Core Interview Questions
A focused review of the .NET Core concepts most commonly probed in technical interviews: the CLR, async/await, and dependency injection.
Related Reading
Related Study Notes in Microsoft Technologies
Browse all study notesWindows 10 / UWP Development Study Notes
.NET · 30 topics
Microsoft TechnologiesWindows Batch Scripting Study Notes
Batch · 30 topics
Microsoft TechnologiesMFC (Microsoft Foundation Classes) Study Notes
C++ · 30 topics
Microsoft TechnologiesSilverlight Study Notes
.NET · 30 topics
Microsoft TechnologiesXAML Study Notes
.NET · 30 topics
Microsoft TechnologiesWPF (Windows Presentation Foundation) Study Notes
.NET · 30 topics