DEV Community

Anup Karanjkar
Anup Karanjkar

Posted on Originally published at wowhow.cloud

.NET 11 RC2: What Is New and Whether to Upgrade From 8 or 10

.NET 11 RC2, published on 13 October 2026, is the final release candidate and ships with a go-live license, but the practical advice is split by where you start: .NET 8 teams must move before 10 November 2026 and should land on .NET 10, while .NET 10 teams have until November 2028 and can wait for .NET 11 GA.[1] .NET 11 is a Standard Term Support release, so it gets two years of patches, from 10 November 2026 to 9 November 2028.[2] This post covers what is new in RC2, the support table for .NET 8 to 11, the upgrade steps and the breaking-changes list, and how to decide between shipping on RC2 and waiting.

TL;DR

  • RC2 (11.0.0-rc.2, 13 Oct 2026) is production-usable under the go-live license, but Microsoft has not published a GA date on the RC2 post.

  • .NET 11 is STS: supported from 10 Nov 2026 to 9 Nov 2028 per the release notes README.

  • .NET 8 and .NET 9 both reach end of support on 10 Nov 2026. .NET 10 (LTS) runs to 14 Nov 2028.

  • C# 15 adds union types, closed hierarchies, collection expression arguments, extension indexers and labeled break and continue, all still marked preview on the docs page.

  • On .NET 8: go to .NET 10 now. On .NET 10: stay put, test on RC2 in CI, move after GA if you want the new features.

What RC2 is and what the go-live license means

The .NET team published the RC2 announcement on 13 October 2026. It is the second release candidate, it includes a go-live support license, and the post says it can be used in production.[1] The release notes list the sequence: preview 1 on 10 February, preview 7 on 11 August, RC1 on 8 September, and 11.0.0-rc.2 on 13 October.[2]

One thing matters for planning: the support policy page lists RC2 under go-live releases with an end-of-support date of 10 November 2026, the same day .NET 8 and 9 expire.[3] So RC2 is not a version you can sit on. If you deploy it, you commit to moving to the GA build when it appears.

The same day, Microsoft shipped the October servicing releases: .NET 10.0.13 (SDK 10.0.402), .NET 9.0.21 (SDK 9.0.319) and .NET 8.0.32 (SDK 8.0.426), each dated 13 October 2026. Their release metadata lists 44, 42 and 40 CVE fixes respectively.[7] Patch whatever you run today before you plan the bigger move.

The RC2 post lists tooling support in Visual Studio 2026 Insiders and in Visual Studio Code with the C# Dev Kit. It names no exact GA date.[1]

What is new in RC2 that a working team will notice

RC2 is a polish release, not a feature drop. The announcement is organised by area, and most items are small. Here are the ones that change day-to-day work.

Libraries and runtime

The libraries section lists incremental CBOR reading, experimental composite ML-KEM and HPKE APIs, DataAnnotations messages formatted with attribute-specific arguments, and a configurable initial HTTP/2 concurrency.[1] The ML-KEM and HPKE items are the post-quantum cryptography work; the post labels them experimental, so do not build a production protocol on them yet. On the runtime side, the only listed change is that file locking on iOS and tvOS is disabled by default.

SDK, MSBuild and NuGet

The SDK now accepts quoted values in file-level directives and allows MSBuild properties inside launch-profile arguments. MSBuild gets faster wildcard matching during project evaluation, which helps repositories with large glob-heavy projects. NuGet lets you set a minimum package publication age from the CLI, a useful guard against grabbing a package version that was published minutes ago, which is the window supply-chain attacks rely on.[1]

ASP.NET Core, MAUI, Windows Forms and F

In ASP.NET Core, the QuickGrid virtualization APIs are no longer experimental. .NET MAUI gains a way to create apps with C# UI, Apple Icon Composer asset support, XAML authoring and Hot Reload work, and updates for .NET for Android and Apple platforms. Windows Forms adds a KioskModeManager component, deferred form reveal, suspension of painting and layout during bulk updates, and new analyzers that guide the Designer. F# gets runtime async support, reraise in computation expressions, fewer allocations in FSharp.Core collections and lower compiler memory use.[1]

The RC2 post does not list C# features itself. It points to the C# 15 page, which is where the language changes live.

C# 15 in one table

The Microsoft Learn page for C# 15 lists six feature areas and calls C# 15 the latest preview release.[4] Treat that wording as the status: the page last updated on 14 September 2026, before RC2, so check it again before you depend on any of these.

Feature What it does Status note on the docs page

| Collection expression arguments | A with(...) first element passes capacity or a comparer to the collection constructor | Listed under C# 15 |

| Union types | The union keyword declares a value that is one of several case types, with exhaustive switch checking | Some proposal features not yet implemented |

| Closed hierarchies | A closed class can only be derived in its own assembly, so switches over it need no default arm | Listed under C# 15 |

| Extension indexers | Declare an indexer inside an extension block | Listed under C# 15 |

| Labeled break and continue | Name a loop or switch to exit or continue, instead of a flag or goto | Listed under C# 15 |

| Memory safety | Pointer relaxations and an unsafe(expression) form | Needs the preview language version |

Union types are the headline. The docs example declares public union Pet(Cat, Dog, Bird); and the compiler then checks that a switch expression covers all three cases.[4] The docs also say the runtime has included UnionAttribute and IUnion since .NET 11 Preview 5. Closed hierarchies solve the same exhaustiveness problem for class trees you control.

Labeled break and continue is the one you will use the first day. The docs show continue outer; and break outer; against a labeled outer for loop, replacing the Boolean flag pattern. A new style rule, IDE0410, flags the flag and goto patterns it replaces.[4]

Support windows for .NET 8, 9, 10 and 11

The support policy page states that LTS releases get three years of free support and patches, and STS releases get two years.[3] Here are the dates from the policy page and the .NET 11 release notes README.

Version Release type Original release End of support

| .NET 8 | LTS | 14 Nov 2023 | 10 Nov 2026 |

| .NET 9 | STS | 12 Nov 2024 | 10 Nov 2026 |

| .NET 10 | LTS | 11 Nov 2025 | 14 Nov 2028 |

| .NET 11 | STS | Support starts 10 Nov 2026 (README) | 9 Nov 2028 (README) |

Two details to read carefully. First, .NET 11 does not appear in the policy page support table yet; the dates for it come from the release notes README, which says it will be supported from 10 November 2026 to 9 November 2028.[2] Second, .NET 8 loses support in the same week .NET 11 is expected to ship, so the 8 to 10 move is a deadline, not a preference.

On GA timing: the .NET Conf 2026 page lists the conference for 10 to 13 November and says it will celebrate the launch of .NET 11, but it gives no release date.[5] The README support start of 10 November lines up with day one of the conference. Treat GA at .NET Conf as expected, not announced.

Upgrade path: what to change in the repo

The mechanics are the same for every move. Pin the SDK, retarget, build with warnings visible, then read the breaking-changes list for the areas you use.

{
  "sdk": {
    "version": "11.0.100-rc.2.26504.105",
    "rollForward": "latestFeature",
    "allowPrerelease": true
  }
}
Enter fullscreen mode Exit fullscreen mode

That is the RC2 SDK build listed in the dotnet/core release notes (runtime 11.0.0-rc.2).[2] Install it from get.dot.net/11 and confirm with dotnet --list-sdks. Then change the project file:


  net11.0
  false

Enter fullscreen mode Exit fullscreen mode

Leave warnings-as-errors off for the first build so you can see the full list, then turn it back on once the list is clean. To check that global.json is valid JSON before CI does, paste it into the JSON formatter.

What the breaking-changes page lists

Microsoft's .NET 11 breaking-changes page groups entries by area and tags each as binary incompatible, source incompatible or a behavioral change. It carries a note that it is a work in progress and not a complete list.[6] The areas that most apps touch:

  • Core libraries: CborReader and CborWriter enforce a default maximum nesting depth; TAR-reading APIs verify header checksums; CRC32 validation is added when reading ZIP archive entries; Math.Round and MathF.Round return correctly rounded results; DateOnly and TimeOnly TryParse methods throw for invalid input.

  • Extensions: IHost.RunAsync and IHost.StopAsync throw when a BackgroundService fails; synchronous access to async-validated options throws.

  • JIT: floating-point conversions to small integral types are saturating, and minimum hardware requirements are updated.

  • Networking: SslStream server-side AIA certificate downloads are disabled by default.

  • SDK and MSBuild: dnx scripts bypass global.json SDK selection; the template engine packages no longer support netstandard2.0; VSTest drops its Newtonsoft.Json dependency.

  • .NET MAUI: the minimum Android API level is raised to 24.

  • Cryptography: DSA is removed from macOS.

Of these, the BackgroundService change is the one most likely to bite a service: a worker that used to fail quietly now surfaces the failure through the host. That is arguably better behavior, but it will change how your process exits and how your orchestrator restarts it.

Ship on RC2 or wait for GA

The go-live license answers the legal question. It does not answer the engineering one. Use this decision table.

You run Deadline Recommendation

| .NET 8 in production | 10 Nov 2026 | Move to .NET 10 now. It is LTS to Nov 2028 and has a year of fixes behind it. Do not jump to an STS preview to beat a deadline. |

| .NET 9 in production | 10 Nov 2026 | Move to .NET 10 if you want the longest runway, or to .NET 11 GA if you need a C# 15 feature. Either way, plan for November. |

| .NET 10 in production | 14 Nov 2028 | Stay. Add a CI job that builds against RC2 so the breaking-changes list becomes a known quantity before GA. |

| New internal service, short lifespan | None | RC2 is acceptable if you accept moving to GA the week it lands. |

The case against shipping RC2 to customers is simple: an RC build is a moving target until GA, and the policy page gives RC2 the same end-of-support day as .NET 8. The case for it is also real. If you are building something that needs union types and exhaustive switches today, the compiler support is there, with the caveat that parts of the union proposal are unimplemented and the language is still labeled preview.[4]

For teams on .NET 10 the better move is cheap: build against net11.0 in a side branch, count the warnings, and read only the breaking-changes entries for APIs you call. If you also run Node or Python services, the same deadline thinking applies there; see our Node 26 LTS upgrade guide and the Python 3.15 migration checklist for how those release trains compare. The MCP breaking-changes migration guide is a reminder that protocol-level breaks hit harder than language ones.

Frequently asked questions

Can I use .NET 11 RC2 in production?

Yes. The RC2 announcement says it includes a go-live support license and can be used in production.[1] The policy page lists RC2 support ending 10 November 2026, so you need to update to the GA build.

When is .NET 11 GA?

No date is stated on the RC2 post. The .NET Conf 2026 page, 10 to 13 November, says it will celebrate the launch of .NET 11, and the release notes README starts support on 10 November. GA at the conference is expected, not confirmed.[5]

Is .NET 11 LTS?

No. The README calls it a Standard Term Support release, supported for two years, to 9 November 2028.[2] .NET 10 is the current LTS.

When does .NET 8 support end?

10 November 2026, per the support policy page. .NET 9 ends the same day.[3]

Is C# 15 final in RC2?

The Microsoft Learn page still calls C# 15 the latest preview release, and some union proposal features are not implemented. Check the page again before relying on a feature.[4]

Where is the full list of breaking changes?

learn.microsoft.com/dotnet/core/compatibility/11. Microsoft notes the list is incomplete and still growing.[6]

Sources

  1. .NET 11 RC 2, .NET Blog, 13 October 2026 (accessed 20 October 2026)

  2. dotnet/core: .NET 11.0 release notes README (accessed 20 October 2026)

  3. .NET and .NET Core official support policy (accessed 20 October 2026)

  4. What is new in C# 15, Microsoft Learn (accessed 20 October 2026)

  5. .NET Conf 2026 (accessed 20 October 2026)

  6. Breaking changes in .NET 11, Microsoft Learn (accessed 20 October 2026)

7. dotnet/core release notes: releases.json for 8.0, 9.0 and 10.0 (October 2026 servicing, accessed 20 October 2026)

Originally published at wowhow.cloud

Top comments (0)