.NET 10: What You Need to Know (LTS Release, Coming November 2025)

cover

The next version of .NET is .NET 10 and it is coming with Long-Term Support (LTS), scheduled for November 2025.

On September 9, 2025, Microsoft released .NET 10 Release Candidate 1 (RC1), which supports go-live usage and is compatible with Visual Studio 2026 Insider and Visual Studio Code Insider via the C# Dev Kit extension.


.NET 10 Runtime Enhancements

  • JIT Speed-ups: Enhanced struct argument handling—members now go directly into registers, reducing memory load/store operations.
  • Advanced Loop Optimization: New graph-based loop inversion improves precision and boosts further optimizations.
  • Array Interface De-virtualization: Critical for performance, now array-based enumerations inline and skip virtual calls including de-abstraction of array enumeration and small-array stack allocation.
  • General JIT Improvements: Better code layout and branch reduction support overall efficiency.

Language & Library Upgrades

C# 14 Enhancements

  • Field-backed properties: easier custom getters/setters.
  • nameof for unbound generics like List<>.
  • Implicit conversions for Span<T> and ReadOnlySpan<T>.
  • Lambda parameter modifiers (ref, in, out).
  • Partial constructors/events.
  • extension blocks for static extension members.
  • Null-conditional assignment (?.=) and custom compound/increment operators.

F# & Visual Basic Enhancements

  • F# improvements via <LangVersion>preview</LangVersion>, updated FSharp.Core, and compiler fixes.
  • VB compiler supports unmanaged generics and respects OverloadResolutionPriorityAttribute for performance and overload clarity.

.NET Libraries & SDK

Libraries:

  • Better ZipArchive performance (lazy entry loading).
  • JSON improvements, including JsonSourceGenerationOptions and reference-handling tweaks.
  • Enhanced OrderedDictionary, ISOWeek date APIs, PEM data and certificate handling, CompareOptions.NumericOrdering

SDK & CLI:

  • No major new SDK features in RC1—you should expect stability fixes rather than additions.
  • Earlier previews brought JSON support improvements (e.g., PipeReader for JSON, WebSocketStream, ML-DSA crypto, AES KeyWrap), TLS 1.3 for macOS

ASP.NET Core & Blazor

Blazor & Web App Security:

Enhanced OIDC and Microsoft Entra ID integration, including encrypted token caching and Key Vault use.

UI Enhancements:

  • QuickGrid gains RowClass for conditional styling.
  • Scripts now served as static assets with compression and fingerprinting.
  • NavigationManager no longer scrolls to top for same-page updates.

API Improvements:

Full support for OpenAPI 3.1 (JSON Schema draft 2020-12), and metrics for authentication/authorization events (e.g., sign-ins, logins) .


.NET MAUI

Updates include multiple file selection, image compression, WebView request interception, and support for Android API 35/36.

EF Core

LINQ enhancements, performance boosts, better Azure Cosmos DB support, and more flexible named query filters.

Breaking Changes in .NET 10

ASP.NET Core - Breaking Changes in .NET 10:

.NET 10 Preview 7 brings several deprecations + behavior changes, while RC1 removes the old WebHost model.

EF Core - Breaking Changes in .NET 10:

You can find the complete list at Microsoft EF Core 10 Breaking Changes page. Here's the brief summary:

EF Core - SQL Server

  • JSON column type by default (Azure SQL / compat level ≥170). Primitive collections and owned types mapped to JSON now use SQL Server’s native json type instead of nvarchar(max). A migration may alter existing columns. Mitigate by setting compat level <170 or explicitly forcing nvarchar(max).
  • ExecuteUpdateAsync signature change. Column setters now take a regular Func<…> (not an expression). Dynamic expression-tree code won’t compile; replace with imperative setters inside the lambda.

Microsoft.Data.Sqlite

  • GetDateTimeOffset (no offset) assumes UTC. Previously assumed local time. You can temporarily revert via AppContext.SetSwitch("Microsoft.Data.Sqlite.Pre10TimeZoneHandling", true).
  • Writing DateTimeOffset to REAL stores UTC. Conversion now happens before writing; revertable with the same switch.
  • GetDateTime (with offset) returns UTC DateTime (DateTimeKind.Utc). Was Local before. Same temporary switch if needed.

Who’s most affected

  • Apps on Azure SQL / SQL Server 2025 using JSON mapping.
  • Codebases building expression trees for bulk updates.
  • Apps using SQLite with date/time parsing or REAL timestamp storage.

Quick mitigations

  • Set SQL Server compatibility <170 or force column type.
  • Rewrite ExecuteUpdateAsync callers to use the new delegate form.
  • For SQLite, update handling to UTC or use the temporary AppContext switch while transitioning.

Containers - Breaking Changes in .NET 10:

Default .NET images now use Ubuntu.

Core Libraries - Breaking Changes in .NET 10:

ActivitySource behavior tweaks; generic math shift behavior aligned; W3C trace context is default; DriveInfo reports Linux FS types; InlineArray size rules tightened; System.Linq.AsyncEnumerable included in core libs...

Cryptography - Breaking Changes in .NET 10:

Stricter X500 name validation; OpenSSL primitives unsupported on macOS; some key members nullable/renamed; env var rename to DOTNET_OPENSSL_VERSION_OVERRIDE.

Extensions - Breaking Changes in .NET 10:

Config preserves nulls; logging/package/trim annotations changes; some trim-unsafe code annotations removed.

Globalization & Interop - Breaking Changes in .NET 10:

ICU env var renamed; single-file apps stop probing executable dir for native libs; DllImport search path tightened.

Networking:

HTTP/3 disabled by default when trimming; default cert revocation check now Online; browser clients stream responses by default; URI length limits removed.

SDK & MSBuild/NuGet - Breaking Changes in .NET 10:

dotnet --interactive defaults to true; tool packages are RID-specific; workload sets default; dotnet new sln uses SLNX; restore audits transitives; local tool install creates manifest by default; project.json not supported; stricter NuGet validation/errors.

WinForms/WPF:

Multiple API obsoletions/parameter renames; rendering/behavior tweaks; stricter XAML rules (e.g., disallow empty row/column definitions or incorrect usage of DynamicResource will crash).


Support Policy for .NET 10

As you can see from the picture below, .NET 10 has long term support therefore it will be maintained for 3 years until November 2028.

.NET 10 Support Policy

Download .NET10

Click 👉 https://dotnet.microsoft.com/en-us/download/dotnet/10.0 to download the latest release candidate (currently RC.1).

Download .NET 10

Also to use the latest features, download/update your Visual Studio to the latest 👉 https://visualstudio.microsoft.com/downloads/