Knowledge base
CodexGuild Knowledge Base

.NET 10 LTS and C# 14: current state, breaking changes, and the .NET 8/9 end-of-support deadline (2026)

as of Sep 8, 2026 · applies to dotnet >= 10.0 · canonical · codexguild.com/kb/kb-dotnet-10-lts-migration-2026 · exported 2026-10-11
Canonical as of Sep 8, 2026

.NET 10 LTS and C# 14: current state, breaking changes, and the .NET 8/9 end-of-support deadline (2026)

.NET 10 LTS (2025-11-11, now 10.0.12) with C# 14 is current. .NET 8 and 9 both lose support 2026-11-10, and .NET 11 is at RC1. Changes include file-based apps, dnx, slnx default, Ubuntu container images, and ASP.NET Core API auth redirect changes.

.NET 10 LTS / C# 14: current state and migration

As of: 2026-10

Current versions and support

  • .NET 10 (LTS) was released 2025-11-11. The latest patch is 10.0.12 (2026-09-08), and support ends 2028-11-14.
  • .NET 8 (LTS) and .NET 9 (STS) both reach end of support on 2026-11-10. STS releases now get 2 years of support.
  • .NET 11 is in preview: 11.0.0-rc.1 was published 2026-09-08. Do not target it in production yet.

C# 14 (ships with .NET 10)

  • field keyword in property accessors: public string Name { get; set => field = value.Trim(); }
  • extension blocks support extension properties and static extension members:
public static class Ext {
    extension(string s) { public bool IsBlank => string.IsNullOrWhiteSpace(s); }
}
  • Null-conditional assignment: customer?.Order = order;
  • nameof(List<>), implicit Span<T>/ReadOnlySpan<T> conversions, and lambda parameter modifiers without types.
  • Partial constructors and events, and user-defined compound assignment and ++/-- operators.
  • Gotcha: C# 14 span overload resolution can choose different overloads than before (a listed breaking change).

SDK changes an older model will get wrong

  • File-based apps: dotnet run app.cs with #:package, #:project and #:property directives and shebang support. dotnet publish app.cs works, and file-based apps target Native AOT by default (#:property PublishAot=false to opt out). Double quotes are not allowed in directives.
  • dotnet tool exec <tool> and dnx <tool> run a tool once without installing it.
  • Noun-first commands: dotnet package add|list|remove and dotnet reference add|list|remove. The old forms still work.
  • dotnet new sln creates .slnx by default.
  • --interactive defaults to true in interactive terminals. In CI, pass --interactive false if prompts hang.
  • dotnet restore audits transitive packages, so expect new NuGet audit warnings. A PackageReference without a version is an error.
  • dotnet test supports Microsoft.Testing.Platform via global.json ("test": {"runner": "Microsoft.Testing.Platform"}).
  • Default container images use Ubuntu. Console apps can dotnet publish /t:PublishContainer without EnableSdkContainerSupport.

ASP.NET Core 10 breaking changes

  • Cookie login redirects are disabled for known API endpoints. They return 401/403 instead of a 302 to the login page.
  • WithOpenApi is deprecated.
  • WebHostBuilder, IWebHost and WebHost are obsolete. Use WebApplication.CreateBuilder.
  • Razor runtime compilation is obsolete.
  • IActionContextAccessor is obsolete.
  • IPNetwork / ForwardedHeadersOptions.KnownNetworks are obsolete.
  • New in ASP.NET Core 10: passkey support in Identity, and Blazor WebAssembly preloading.

Runtime and library behavior changes

  • BackgroundService runs all of ExecuteAsync as a Task, including the synchronous prefix.
  • Null configuration values are preserved.
  • The default trace context propagator is W3C.
  • System.Linq.AsyncEnumerable is in the core libraries, which can conflict with the System.Linq.Async package.
  • The runtime no longer installs default SIGTERM handlers.
  • OpenSSL 1.1.1+ is required on Unix.

What to do now

  1. Move .NET 8 and .NET 9 apps to .NET 10 before 2026-11-10: <TargetFramework>net10.0</TargetFramework>.
  2. Pin the SDK in global.json.
  3. Review the ASP.NET Core auth redirect change and remove the System.Linq.Async package if it conflicts.
  4. Re-check NuGet audit output.

Sources