.NET 11 Release Candidate 2: Go-Live License and Updates Across Libraries, F#, MAUI, and WinForms
Microsoft has released .NET 11 Release Candidate 2 under a go live license, supported in Visual Studio 2026 Insiders. The release adds incremental CBOR reading, experimental post quantum cryptography APIs, file based app directive improvements, NuGet package cooldowns, F runtime async building blocks, a C UI option…

Microsoft has released .NET 11 Release Candidate 2 with a go-live license for production use, as stated in the announcement. The build is supported in Visual Studio 2026 Insiders and in Visual Studio Code with the C# Dev Kit. As reported, it brings changes across the libraries, runtime, SDK, NuGet, F#, ASP.NET Core, .NET MAUI, and Windows Forms, with no new C# language features.
In the libraries, CborReader can now read a payload delivered in chunks, using isFinalBlock and SlideData, in Lax conformance mode only. Two experimental cryptography types arrive: CompositeMLKem combines post-quantum and classical key encapsulation, and Hpke provides Hybrid Public Key Encryption with classical DHKEM suites only.
Both require opting in through SYSLIB5009 and SYSLIB5006, as described in the release notes. ValidationAttribute.FormatMessage lets a host supply a message template for the attribute to fill in, and SocketsHttpHandler.InitialHttp2MaxConcurrentStreams caps streams on a new HTTP/2 connection until the server's SETTINGS frame arrives.
The runtime release focuses on reliability but carries one breaking change. CoreCLR now disables advisory file locking by default on iOS and tvOS, because, as stated, FileStream lock in RC 1 could cause the OS to terminate an app entering the background. FileShare restrictions are no longer enforced there, and setting DOTNET_SYSTEM_IO_DISABLEFILELOCKING to 0 restores locking, according to the release.
ASP.NET Core has few new features but several changes for apps upgrading from RC 1. QuickGrid's AnchorMode and ItemComparer parameters are no longer experimental. IValidationMessageFormatter has been removed in favor of FormatMessage, the Blazor BasePath component moved to the Microsoft.AspNetCore.Components namespace, and the experimental device-bound sessions package was pulled from this build. As reported, the remaining AddRazorRuntimeCompilation overloads now warn with ASPDEPR003.
In the SDK, file-based programs accept quoted values in #:property directives, and the #:package, #:project, and #:ref directives take trailing Name=Value item metadata. MSBuild gains faster wildcard matching during project evaluation, which, as reported in Microsoft's Windows benchmarks, puts it at 10–13% faster with 16–34% fewer allocations.
NuGet adds --min-publish-age-hours to dotnet nuget add source and update source, and restore fails with NU1020 when a package cooldown leaves no eligible floating version.
F# ships several preview features. The compiler gains return and await intrinsics for building custom computation-expression builders on the runtime-async model, though FSharp.Core does not yet ship such a builder, as stated in the notes.
let calculation () =
runtimeTask {
let captured = 40
let! delta = delayed 2
return captured + delta
}
The reraise() now works inside the with handler of async and task expressions. Outside preview, more List and Array functions inline their callbacks to cut allocations, Async.parallelLimit bounds concurrent work, and bitwise operators on non-integer enums now fail at compile time with FS0001.
The .NET MAUI maui template gains a --ui csharp option that generates the app, shell, and main page in C# rather than XAML, and the multi-project template adds an --avalonia option for an Avalonia desktop project.
MauiIcon accepts Apple Icon Composer .icon bundles, and UseiOSShellHandler opts into a handler-based Shell on Apple platforms. Android adds API 37.2 bindings and JDK 25 support, while Apple workloads now require Xcode 27.0 and apps built with its SDKs must adopt the UIKit scene lifecycle, as described in the breaking changes.
Windows Forms refines the .NET 11 visual styles. Application.SetDefaultVisualStylesMode selects the renderer version, but ToolStrip and DataGridView keep Classic rendering even under Net11 for now. Application.SystemVisualSettings exposes a snapshot of the Windows accent color, text scaling, and high-contrast state, and FormRevealMode defers a top-level form's first presentation to reduce background flashes.
New analyzers WFO3000 to WFO3002 flag code that cannot round-trip through the Designer, which the release notes say is particularly useful when AI tools generate or refactor forms.
Other changes in this release are MSBuild property expansion in launch-profile arguments, an F# RequireNamedArgumentsAttribute, a private-member R8 obfuscation default on Android, SuspendPainting and KioskModeManager for Windows Forms, EF Core SaveChanges and JSON projection fixes.
On Reddit, discussion focused less on the features than on upgrade cadence. Commenters asked how many teams still skip odd-numbered releases, and others replied that since .NET 9 a standard-term release shares its end-of-support date with the preceding LTS version, moving to .NET 11 costs no support time.
Other developers reported MAUI workloads breaking on every preview upgrade, questioned Blazor server-side rendering performance against Razor Pages and MVC, and welcomed the KioskModeManager component for Windows Forms.
For interested readers and developers, the full release notes for .NET 11 RC 2 are available on the dotnet/core repository on GitHub.
Originally published on
InfoQ
Keep reading





