Latest in branch 10.0 (LTS)
10.0.9
Released 09 Jun 2026
(4 days ago)
Software.NET
Version10.0 (LTS)
StatusLTS
Supported
Initial release10.0.0
11 Nov 2025
(7 months ago)
Latest release10.0.9
09 Jun 2026
(4 days ago)
End of life14 Nov 2028
(Ends in 2 years, 5 months)
Release noteshttps://github.com/dotnet/core/blob/main/release-notes/10.0/10.0.9/10.0.9.md
Source codehttps://github.com/dotnet/core/tree/v10.0.9
Documentationhttps://learn.microsoft.com/en-us/aspnet/core/?view=aspnetcore-10.0
Downloadhttps://dotnet.microsoft.com/en-us/download/dotnet/10.0
.NET 10.0 (LTS) ReleasesView full list

What Is New in .NET 10

Category Highlights
New Features
  • Post-quantum cryptography (ML-DSA, Composite ML-DSA, HashML-DSA)
  • WebSocketStream API
  • Windows process group support
  • C# 14: extension blocks, null-conditional assignment, field-backed properties
  • dotnet tool exec one-shot execution
  • Console app container image publishing
  • NativeAOT enhancements
  • TLS 1.3 on macOS
  • AVX10.2 vectorization support
Improvements
  • JIT inlining, devirtualization, and loop inversion optimizations
  • JSON strict serialization settings and duplicate-property detection
  • PipeReader support in System.Text.Json
  • EF Core named query filters and Cosmos DB improvements
  • Blazor WebAssembly preloading
  • OpenAPI enhancements
  • MAUI MediaPicker multi-file and image compression
  • WPF Fluent style changes and performance improvements
  • Visual Basic OverloadResolutionPriorityAttribute support
  • CLI tab-completion scripts
  • SDK --cli-schema introspection
Breaking Changes
  • CLI command order standardized
  • Platform-specific tool resolution changed with new any RuntimeIdentifier semantics
  • F# new language features require explicit LangVersion setting until final release
Deprecations
  • Legacy CLI argument ordering patterns superseded by standardized command syntax

What Are the Biggest Runtime and JIT Improvements in .NET 10?

.NET 10 delivers meaningful JIT throughput gains through improved inlining heuristics, more aggressive method devirtualization, and enhanced loop inversion that enables downstream optimizations. For teams running throughput-sensitive services, these translate to measurable request-per-second improvements without any code changes.

Stack allocation has been expanded so the JIT can eliminate more heap pressure in common patterns. In practice, tight loops over value types and short-lived intermediate objects benefit most. Pair this with the new AVX10.2 SIMD support and you have a compelling upgrade story for numerical or data-pipeline workloads.

  • JIT inlining: Smarter call-site profiling means hot paths inline more aggressively while cold paths stay lean.
  • Devirtualization: Interface dispatch on sealed or effectively-sealed types is now eliminated more reliably, cutting call overhead in generic-heavy code.
  • Loop inversion: Common for/while patterns are restructured so the condition check moves to the bottom, enabling better branch prediction and vectorization.
  • AVX10.2: New hardware intrinsics are surfaced for workloads on compatible Intel/AMD processors.
  • NativeAOT: Reduced binary size and faster startup times with continued trimming improvements.

Watch out for any code relying on specific JIT codegen behavior or reflection patterns that conflict with NativeAOT trimming. If you are already publishing NativeAOT binaries, re-run your trimming analysis after upgrading.

How Does .NET 10 Change Cryptography and Security APIs?

.NET 10 is the most significant cryptography release in years, adding post-quantum algorithm support that production teams should plan for now even if adoption is not immediate.

ML-DSA (FIPS 204) arrives with simplified APIs and adds HashML-DSA variants. Composite ML-DSA combines a post-quantum algorithm with a classical algorithm in a single signature operation, which is the pattern most standards bodies recommend for hybrid migration. Windows CNG backend support means these algorithms work natively on Windows without managed fallbacks.

// ML-DSA key generation and signing (simplified API)
using var key = MLDsa.GenerateKey(MLDsaAlgorithm.MLDsa65);
byte[] signature = key.SignData(dataToSign);
bool valid = key.VerifyData(dataToSign, signature);

Additional highlights:

  • AES KeyWrap with Padding (AES-KWP): RFC 5649 support for wrapping keys of arbitrary length, commonly required in payment and HSM integrations.
  • TLS 1.3 on macOS clients: Previously only available on Linux/Windows. macOS services and CLI tooling now negotiate TLS 1.3 by default where the server supports it.
  • WebSocketStream: A new Stream-based wrapper over WebSocket that eliminates the ceremony of managing send/receive loops manually. This matters if you have any server-side streaming protocol built on raw WebSocket.
  • Windows process group support: Applications can now associate child processes with a Windows Job Object group via managed APIs, enabling cleaner signal isolation on Windows hosts.

What Does C# 14 Add That Will Actually Change How You Write Code Daily?

C# 14 ships several features that address long-standing friction points rather than adding syntactic novelty for its own sake.

Field-backed properties solve the most common reason developers abandon auto-properties: the moment you need any logic in a getter or setter you had to rewrite the whole property with a manual backing field. Now the compiler-generated backing field is accessible via the field contextual keyword:

public string Name
{
    get;
    set => field = value?.Trim() ?? throw new ArgumentNullException(nameof(value));
}

Extension blocks are a structural change. You can now define static extension methods, and static and instance extension properties, inside a dedicated extension block rather than a static class. This cleans up SDK and library code that currently scatters extension members across multiple static helper classes.

extension(string s)
{
    public bool IsNullOrEmpty => string.IsNullOrEmpty(s);
    public static string Empty => string.Empty;
}

Other practical additions:

  • Null-conditional assignment (target?.Property = value): assigns only if the target is non-null. Eliminates a common guard-clause pattern.
  • User-defined compound and increment/decrement operators: Types can now define +=, -=, ++, and -- directly, which matters for custom numeric or measurement types.
  • Span<T> and ReadOnlySpan<T> implicit conversions: First-class treatment reduces casting noise in performance-oriented code.
  • Lambda ref/in/out modifiers without explicit types: Cleaner lambda signatures when the type can be inferred.
  • Partial constructors and partial events: Extends the partial member model introduced in C# 13 to constructors and events, which is useful in source-generator scenarios.
  • nameof with unbound generics: nameof(List<>) now compiles, returning "List". Useful in diagnostic and serialization code.

What Are the Most Impactful SDK and Tooling Changes in .NET 10?

.NET 10 SDK changes center on developer ergonomics and container publishing workflows that most teams will feel immediately.

Microsoft.Testing.Platform (MTP) integration in dotnet test is the headline for CI pipelines. MTP provides a faster, extensible test host that reduces process startup overhead. Teams using VSTest today can migrate incrementally since both hosts remain supported.

Container publishing is significantly more accessible:

  • Console apps can publish container images natively without a Dockerfile. Previously only web projects (via PublishContainer) had first-class support.
  • A new MSBuild property lets you control the container image format explicitly (OCI vs Docker v2 manifest), which matters for registries with strict format requirements.
<!-- Publish a console app as a container image -->
<PropertyGroup>
  <EnableSdkContainerSupport>true</EnableSdkContainerSupport>
  <ContainerImageFormat>Oci</ContainerImageFormat>
</PropertyGroup>

Tool execution gets a major quality-of-life upgrade:

  • dotnet tool exec: Run a tool once without permanently installing it, similar to npx in the Node ecosystem.
  • dnx script: A new shell script for tool execution that works uniformly across bash and PowerShell.
  • any RuntimeIdentifier: Platform-specific tools now resolve more reliably across different host architectures without manual RID specification.
  • --cli-schema: Outputs a machine-readable JSON schema of the CLI surface, enabling better IDE integrations and custom shell completions.

File-based apps (scripts without a full project file) now support dotnet publish and NativeAOT, which is a significant leap for lightweight tooling scenarios.

What Changed in EF Core 10, ASP.NET Core, and MAUI for .NET 10?

Each major framework area ships improvements that compound the runtime and library gains.

EF Core 10 adds named query filters, which solve a long-standing limitation: previously you could register only one global filter per entity type (commonly used for soft-delete or multi-tenancy). Named filters allow multiple filters per entity and let you selectively disable individual ones in a query chain without disabling all filters. LINQ translation improvements and Azure Cosmos DB enhancements round out the release.

ASP.NET Core 10 focuses on Blazor, OpenAPI, and Identity:

  • Blazor WebAssembly preloading reduces perceived load time by hinting the browser to fetch WASM assets earlier.
  • Automatic memory pool eviction prevents long-lived server processes from accumulating stale pooled memory.
  • Passkey support lands in ASP.NET Core Identity, enabling FIDO2 passwordless authentication with minimal configuration.
  • Enhanced form validation and improved diagnostics round out the developer experience improvements.

.NET MAUI picks up MediaPicker enhancements (multi-file selection and image compression on-pick), WebView request interception for hybrid app scenarios, and support for Android API levels 35 and 36. Most teams will care about the quality improvements and the Android API level updates if they target newer Play Store requirements.

Developer FAQ: .NET 10

Is .NET 10 a Long-Term Support release?
Yes, .NET 10 is an LTS release supported for three years, making it the right upgrade target for teams that prioritize stability over cutting-edge features on a short cycle.

Do existing C# projects need changes to use C# 14 features like field-backed properties or extension blocks?
No code changes are required to compile existing projects, but to use new C# 14 syntax you must set the LangVersion property to 14 or preview in your csproj file; without it the compiler will not recognize the new keywords such as field in property accessors or the extension block syntax.

How do I try the new dotnet tool exec one-shot execution feature?
Run dotnet tool exec followed by the tool package name and arguments in your terminal; the SDK downloads and runs the tool without adding it to your global or local tool manifest, so no cleanup is needed afterward.

Does the post-quantum cryptography support in .NET 10 require any special hardware or Windows version?
ML-DSA and related algorithms are implemented in managed code and available cross-platform, but Windows CNG backend acceleration requires a supported Windows version; on Linux and macOS the managed implementation runs without any OS-level prerequisites.

Will upgrading to .NET 10 break existing WebSocket-based code when WebSocketStream is introduced?
No, WebSocketStream is a new additive API that wraps the existing WebSocket class; your existing WebSocket send and receive loop code continues to compile and run without modification, and you can migrate incrementally to the Stream-based API at your own pace.

What is the easiest way to validate that my application benefits from the JIT improvements after upgrading to .NET 10?
Run your existing BenchmarkDotNet benchmarks or load tests against the .NET 10 runtime build and compare throughput and latency percentiles side by side with your .NET 9 baseline; no code changes are required since the runtime optimizations apply automatically at startup.

Releases In Branch 10.0 (LTS)

VersionRelease dateRuntimeSDKSecurity
10.0.909 Jun 2026
(4 days ago)
10.0.910.0.301 has security advisories
10.0.812 May 2026
(1 month ago)
10.0.810.0.300 has security advisories
10.0.721 Apr 2026
(1 month ago)
10.0.710.0.203 has security advisories
10.0.614 Apr 2026
(1 month ago)
10.0.610.0.202 has security advisories
10.0.512 Mar 2026
(3 months ago)
10.0.510.0.201
10.0.410 Mar 2026
(3 months ago)
10.0.410.0.200 has security advisories
10.0.310 Feb 2026
(4 months ago)
10.0.310.0.103 has security advisories
10.0.213 Jan 2026
(5 months ago)
10.0.210.0.102
10.0.109 Dec 2025
(6 months ago)
10.0.110.0.101
10.0.011 Nov 2025
(7 months ago)
10.0.010.0.100
10.0.0-rc.214 Oct 2025
(7 months ago)
10.0.0-rc.2.25502.10710.0.100-rc.2.25502.107 has security advisories
10.0.0-rc.109 Sep 2025
(9 months ago)
10.0.0-rc.1.25451.10710.0.100-rc.1.25451.107
10.0.0-preview.712 Aug 2025
(10 months ago)
10.0.0-preview.7.25380.10810.0.100-preview.7.25380.108
10.0.0-preview.615 Jul 2025
(10 months ago)
10.0.0-preview.6.25358.10310.0.100-preview.6.25358.103
10.0.0-preview.510 Jun 2025
(1 year ago)
10.0.0-preview.5.25277.11410.0.100-preview.5.25277.114
10.0.0-preview.413 May 2025
(1 year ago)
10.0.0-preview.4.25258.11010.0.100-preview.4.25258.110
10.0.0-preview.310 Apr 2025
(1 year ago)
10.0.0-preview.310.0.100-preview.3.25201.16
10.0.0-preview.218 Mar 2025
(1 year ago)
10.0.0-preview.2.25163.210.0.100-preview.2.25164.34
10.0.0-preview.125 Feb 2025
(1 year ago)
10.0.0-preview.1.25080.510.0.100-preview.1.25120.13