.NET 11 Released: C# 15 Union Types, Runtime Improvements and What’s New
Microsoft has shipped .NET 11, the next release of its free, open-source, cross-platform development platform. Here is what changed in C# 15, the runtime, the SDK, ASP.NET Core and EF Core, and how to decide whether to move to it now.

.NET 11 at a Glance
| Item | Detail |
|---|---|
| Product | .NET 11 (free, open-source, cross-platform) |
| Language version | C# 15 |
| Support model | Standard Term Support (STS), two years |
| Platforms | SDKs and runtimes for Linux, Windows and macOS |
| Long-term option | .NET 10 remains the LTS release |
| Out of support | .NET 8 and .NET 9 reached end of support on November 10, 2026 |
| Downloads | Official .NET 11 download page |
C# 15 Language Features
C# 15 ships with .NET 11, and the headline feature is union types. A union lets you declare a value that can be exactly one of several specified types. The practical payoff is in switch expressions: the compiler can verify that every case is handled, so a missing branch becomes a compile-time error instead of a runtime surprise.
The other additions in this release:
Restrict direct inheritance to the declaring assembly, so a type’s complete set of subclasses is known.
Extend existing types with indexer-style access, not only methods and properties.
Pass arguments when using collection expressions, giving more control over how the collection is created.
Control nested loops directly instead of using flags or restructuring the code.
Runtime and Performance
.NET 11 includes hundreds of optimizations aimed at execution speed, memory usage and generated-code quality. The notable areas called out in the release coverage:
- JIT improvements. The JIT compiler can eliminate more redundant bounds checks and branches, performs additional devirtualization, and optimizes operations when inputs are known at compile time.
- Native AOT interface dispatch. A shared helper reduces generated code size and improves performance for workloads that call through interfaces frequently.
- Hardware acceleration. Support for FP16 instructions has been added on compatible x64 and Arm64 processors.
As with any performance release, treat the headline numbers as directional. Benchmark your own workloads before and after the upgrade, because gains depend heavily on code shape, hardware and deployment mode.
SDK and Tooling
These changes matter most to developers and to administrators who maintain build servers and CI agents:
- Native AOT-based CLI host by default. Lightweight
dotnetcommands can run without starting the managed CLI, which cuts latency for everyday commands. - Persistent MSBuild server. Keeping MSBuild resident reduces startup overhead between consecutive commands.
- Smaller SDK installers on Linux and macOS. Assembly deduplication reduces installer size, which helps with image builds and air-gapped distribution.
- In-process crash reporting on Linux. When an application exits unexpectedly, the runtime can capture managed stack traces, loaded module information and runtime state first, which makes post-mortem troubleshooting easier.
To confirm which SDK a machine resolves after installation, run:
dotnet --list-sdks
dotnet --version
And to target the new release in a project file:
<PropertyGroup>
<TargetFramework>net11.0</TargetFramework>
</PropertyGroup>
Runtime Async (Preview)
.NET 11 introduces a new Runtime Async execution model. Instead of relying on compiler-generated state machines, the runtime itself handles asynchronous suspension and resumption.
Libraries
- Zstandard compression is now built in through
System.IO.Compression. - Process execution APIs have been expanded.
- In-memory stream adapters let you use existing memory buffers as streams without copying the contents.
- System.Text.Json supports C# union types and F# discriminated unions, and can write JSON Lines output from asynchronous sequences.
- LINQ gains a
FullJoinoperator that preserves unmatched elements from both input collections.
ASP.NET Core and Blazor
- Asynchronous validation. Validation rules can perform database lookups or other I/O without blocking threads.
- OpenAPI 3.2 by default for generated API documentation.
- SignalR credential refresh. Connections can refresh authentication credentials without reconnecting.
- Blazor CacheView component. Caches rendered component output during static server-side rendering.
- Pausing inactive sessions. Interactive Server applications can optionally pause inactive browser sessions to release server resources.
AI, .NET MAUI and Entity Framework Core
AI development support
The SDK now includes an MCP server project template. Experimental Blazor AI components add support for streaming conversations, tool execution and user approval workflows. Because these components are experimental, expect API changes between releases.
.NET MAUI 11
MAUI adopts CoreCLR as the default runtime across supported platforms and improves XAML Hot Reload, native controls and mobile application testing.
Entity Framework Core 11
EF Core 11 improves SQL generation by removing unnecessary joins in more scenarios, expands GroupBy translation, and supports translating LINQ FullJoin on compatible relational database providers.
Support Lifecycle: .NET 11 vs .NET 10 LTS
This is the decision that matters most for production planning. .NET 11 is an STS release with two years of support, while .NET 10 is the current LTS release.
| Question | .NET 11 (STS) | .NET 10 (LTS) |
|---|---|---|
| Support window | Two years | Longer LTS lifecycle (see Microsoft’s support policy for dates) |
| Newest language and runtime features | Yes (C# 15, new SDK behavior) | No |
| Best for | Teams that upgrade annually and want new features early | Long-lived production systems that prefer fewer migrations |
Should You Upgrade? A Practical Checklist
- Inventory what you run. List every application, container image and build agent by target framework. Anything on .NET 8 or .NET 9 is now out of support and should be prioritized.
- Pick the target by lifecycle, not novelty. Choose .NET 11 if you can follow an annual upgrade cadence; choose .NET 10 LTS if you want a longer runway.
- Read the official breaking-changes notes for the version you are moving to before touching any code.
- Update CI/CD first. Install the new SDK on build agents, pin it with
global.jsonif you need reproducible builds, and confirm pipelines still pass. - Test in staging with realistic load. Compare latency, memory use and startup time against your current baseline rather than relying on published gains.
- Avoid preview features in production. Leave Runtime Async and the experimental Blazor AI components for non-critical evaluation.
- Roll out gradually. Use canary or blue-green deployments and keep a rollback path to the previous runtime image.
If you manage Windows Server or Azure hosts for these applications, see our other infrastructure guides on VMoreCloud for hardening and hybrid deployment practices .
Frequently Asked Questions
Is .NET 11 an LTS release?
No. .NET 11 is a Standard Term Support release with two years of support. .NET 10 is the LTS release.
What is the biggest new feature in C# 15?
Union types, which let a value be one of several specified types and allow the compiler to check that switch expressions cover every case.
Is Runtime Async ready for production?
No. It is an opt-in preview feature in .NET 11 and is not enabled by default.
Which .NET versions are out of support?
.NET 8 and .NET 9 reached end of support on November 10, 2026. Move to a supported version to keep receiving security updates.
Where can I download .NET 11?
From the official .NET download page, which provides SDKs and runtimes for Linux, Windows and macOS.
Sources and Further Reading
- Microsoft: Announcing .NET 11
- Official .NET 11 download page
- Linuxiac: Microsoft Releases .NET 11 with C# 15, Runtime Improvements
Feature details in this article are based on Microsoft’s announcement as reported by Linuxiac. Always confirm syntax, defaults and support dates against the official Microsoft documentation before making production decisions.
