.NET 10: What You Need to Know (LTS Release, Coming November 2025)
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 likeList<>
.- Implicit conversions for
Span<T>
andReadOnlySpan<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>
, updatedFSharp.Core
, and compiler fixes. - VB compiler supports
unmanaged
generics and respectsOverloadResolutionPriorityAttribute
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
gainsRowClass
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.
- Cookie login redirects disabled → Redirects no longer occur for API endpoints; APIs now return
401
/403
. (Behavioral change) - WithOpenApi deprecated → Extension method removed; use updated OpenAPI generator features. (Source incompatible)
- Exception diagnostics suppressed → When
TryHandleAsync
returns true, exception details aren’t logged. (Behavioral change) - IActionContextAccessor obsolete → Marked obsolete; may break code depending on it. (Source/behavioral change)
- IncludeOpenAPIAnalyzers deprecated → Property and MVC API analyzers removed. (Source incompatible)
- IPNetwork & KnownNetworks obsolete → Old networking APIs removed in favor of new ones. (Source incompatible)
- ApiDescription.Client package deprecated → No longer maintained; migrate to other tools. (Source incompatible)
- Razor run-time compilation obsolete → Disabled at runtime; precompilation required. (Source incompatible)
- WebHostBuilder, IWebHost, WebHost obsolete → Legacy hosting model deprecated; use
WebApplicationBuilder
. (Source incompatible, RC1)
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 ofnvarchar(max)
. A migration may alter existing columns. Mitigate by setting compat level <170 or explicitly forcingnvarchar(max)
. ExecuteUpdateAsync
signature change. Column setters now take a regularFunc<…>
(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 viaAppContext.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 UTCDateTime
(DateTimeKind.Utc
). WasLocal
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.
Download .NET10
Click 👉 https://dotnet.microsoft.com/en-us/download/dotnet/10.0 to download the latest release candidate (currently RC.1).
Also to use the latest features, download/update your Visual Studio to the latest 👉 https://visualstudio.microsoft.com/downloads/
Comments
No one has commented yet, be the first to comment!