“.NET is stable, let’s build features” works until a security fix, partner SDK, or framework bump needs a newer runtime. This guide shows when to move, how to keep risk low, and what good looks like in late 2025.
Modern .NET runs on two tracks. LTS is the long baseline most services should use. STS moves faster for teams that can adopt changes quickly. Falling far behind increases security and integration risk and makes hiring harder. And, also blocks or complicates AI adoption as cloud AI SDKs align to current .NET lines. The solution is a repeatable cadence that keeps you near supported lines.
This turns upgrades into controlled work rather than a gamble.
Confirm the target line and prove the order of changes with a short exercise. Release in stages. Watch service health and promote only if the numbers hold. For data changes, use a plan that allows old and new code to run side by side while data is moved. Be honest about rollback. When data changed, rolling forward to a safe patch is the realistic option.
We focus on supported lines. After end of support there are no Microsoft security patches and ecosystem friction grows.
.NET 10 (LTS) — launches November 2025
Next long-term baseline. New services starting late 2025 should target 10 once GA lands. Expect rapid ecosystem uptake, performance gains, and new platform features to land here first.
Why it matters: longest runway for security fixes and the best alignment with future ASP.NET Core, EF Core, and cloud SDK updates.
.NET 9 (STS)
Current standard-term release. Good for teams that move fast, but several vendors already align roadmaps to “9 now, 10 LTS next.”
Risk if you linger: shrinking overlap with partner SDKs as they deprecate older target frameworks, creating a narrow window to move without double work.
.NET 8 (LTS)
Today’s LTS and a solid baseline. Most Azure SDKs, EF Core 8, and ASP.NET Core 8 features land here. You benefit from Native AOT improvements and runtime perf work that are not available on 6.
Why it matters: staying on 8 keeps you eligible for current security, performance, and SDK updates while you prepare for 10.
.NET 6 (LTS) — end of support passed
EoS was November 2024. You’ll hit more “net8.0 required” notes in EF Core, ASP.NET Core, analyzers, and cloud SDKs. Container base images for 6 are frozen, which pushes security risk to your OS layer.
Why it matters: rising compliance exposure and mounting engineering time spent on pinning and exceptions instead of product work.
.NET Framework 4.x
Still supported, tied to Windows lifecycle, but new innovation ships on modern .NET. Many newer Azure and third-party SDKs assume .NET 6/8+ targets, so 4.x apps need shims or older clients.
Why it matters: integrations get harder, and hiring gets tougher as engineers prefer modern .NET.
.NET Framework 3.5 SP1
Supported mainly for running legacy apps, not for new development. Tooling, security baselines, and partner SDKs are thin.
Why it matters: higher risk and limited ecosystem choices; migrations require time for dependency and configuration changes.
.NET Framework 3.0 SP2
Out of support since 2011. Any reliance here usually signals deeper platform and dependency freezes.
Why it matters: significant security and operability risk; you’ll need at least a two-step rise before you can adopt modern SDKs.
When teams say “we can’t plug AI in,” it’s usually a runtime/SDK mismatch. Here’s a practical, version-by-version view for Azure OpenAI / OpenAI, AWS Bedrock & SageMaker, and Google Vertex AI.
What the SDKs target (in plain terms)
What this means by your runtime:
Rule of thumb for leaders
If you’re on .NET 8+, you’re in the “green” for Azure/OpenAI, AWS Bedrock/SageMaker, and Vertex AI. On .NET Framework, it’s often technically possible but operationally fragile; the real cost is time lost on workarounds versus building features. Aligning to .NET 8 now (and .NET 10 next) keeps you inside the primary support path that these AI SDKs track.
NET Upgrade Guide_ A Calm Path …
These questions surface hidden risks early and cut upgrade costs.
Often yes, if your frameworks and SDKs support it. Ask for a short compatibility check and a pilot rollout plan.
Keep them isolated. Migrate where the business value is clear. Not every app needs a rewrite, but every app needs a plan.
Stage the release, measure health in production with a small slice of traffic, and only promote when results are good.
Ask for a one-page inventory listing your .NET line, major frameworks, cloud SDKs, base images, and support dates. Approve a short exercise to prove the upgrade order, then schedule a staged rollout. Repeat quarterly so upgrades never become a crisis.
We plan and execute .NET upgrades with calm, measurable steps. If you want an outside view or delivery support, start a conversation.