100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace
.NET

.NET Versioning and LTS Releases

How .NET's release cadence, LTS vs STS support tiers, and target framework monikers work, and how to plan upgrades around them.

Practical .NET CoreIntermediate8 min readJul 10, 2026
Analogies

.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.

xml
<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

Was this page helpful?

Topics covered

#NET#NETCoreStudyNotes#MicrosoftTechnologies#NETVersioningAndLTSReleases#Versioning#LTS#Releases#Annual#StudyNotes#SkillVeris