.NET 11 launches Monday, November 10 at .NET Conf 2026 — a free four-day virtual event. The release ships with runtime-native async that cuts memory overhead by up to 7,400x in async-heavy workloads, C# 15 union types that give you compiler-enforced sum types, and baked-in MCP server support in ASP.NET Core. It is also an STS release, which matters for your upgrade decision. Here is what is actually worth your time.
Runtime Async: 7,400x Less Memory Is Not a Typo
The biggest change in .NET 11 is runtime-native async. The compiler-generated state machine that has powered every async/await call since C# 5 is replaced by runtime-managed suspension and resumption. The practical effects are immediate and measurable.
Stack traces shrink from 13 frames of state-machine infrastructure to 5 frames showing your actual call chain — a meaningful improvement when you are debugging a production issue at 2 AM. Performance numbers from community benchmarks are dramatic: a loop running 10 million awaits on .NET 10 takes 80ms and allocates 687 MB across 25 GC gen-0 collections. On .NET 11 with runtime async enabled: 37ms, 94 KB allocated, zero GC collections. That is roughly 2x faster and 7,400x less memory.
The feature requires an opt-in in your project file for now (<RuntimeAsync>enable</RuntimeAsync>). Most application code requires no changes — the gains arrive at the runtime level. Async continuations also now opt out of ExecutionContext capture when no ambient state is in use, a significant win for high-throughput APIs where context capture was silently taxing every request.
C# 15: Union Types Are Finally Real
C# developers have been building discriminated union workarounds — OneOf packages, tagged structs, sealed base classes — for years. C# 15 makes them unnecessary.
The new union keyword declares a fixed, closed set of case types with compiler-enforced exhaustiveness:
public union Pet(Cat, Dog, Bird);
string Describe(Pet pet) => pet switch
{
Dog d => $"dog: {d.Name}",
Cat c => $"cat: {c.Name}",
Bird b => $"bird: {b.Name}",
};
No default arm needed. Add a fourth case type and the existing switch stops compiling until you handle it. The companion feature is closed hierarchies: add the closed keyword to a base class and the compiler knows the inheritance family is complete — exhaustive switching works on OO hierarchies without the union wrapper. Both features compose naturally with existing pattern matching.
MCP Server Support: One Server, Every AI Client
If you are building .NET services that need to accept tool calls from AI agents — Claude, Copilot, or any MCP-compatible client — .NET 11 cuts the integration work significantly. ASP.NET Core 11 ships with native MCP server support via the ModelContextProtocol.AspNetCore package, jointly maintained by Microsoft and Anthropic.
Register your MCP server with the DI container, map the endpoint with MapMcp(), and any MCP-compatible AI client can discover and call your existing services as tools — no custom integrations per client required. Teams maintaining separate API shims for Claude, OpenAI, and Ollama can consolidate to a single MCP server. Existing ASP.NET Core services become AI-callable with minimal new code.
EF Core 11: FullJoin and Hybrid Search
EF Core 11 adds the FullJoin LINQ operator — it translates to a real FULL JOIN in SQL, replacing the verbose LeftJoin/RightJoin/Concat pattern most teams were using. MaxBy and MinBy now translate to proper SQL MIN/MAX aggregates. The more interesting addition for AI-ready apps is hybrid search for SQL Server: combine full-text search (exact linguistic matches) with vector search (semantic similarity) in a single LINQ query. The EF Core 11 release notes cover the full query pipeline improvements.
Should You Upgrade? The STS Decision
.NET 11 is an STS release — 24 months of support, end-of-life approximately May 2028. .NET 10, released May 2026, is an LTS release supported through November 2028. The honest recommendation: most production services should target .NET 10 LTS, not .NET 11.
If you are running .NET 8 or .NET 9, both reach end-of-life on November 10, 2026 — the same day .NET 11 launches. That is not a reason to jump to .NET 11; it is a reason to migrate to .NET 10 LTS now, with time to test, rather than landing on a brand-new STS release during a migration crunch.
.NET 11 makes sense for teams adopting every version on release, teams building MCP servers, and developers who need C# 15 union types or runtime async improvements today. Everyone else: .NET 10 is the right target. The full what’s new documentation is live on Microsoft Learn. .NET Conf 2026 registration is free — the opening keynote starts November 10 at 8 AM PST.

