
.NET 11 Preview 7 shipped August 11, and it is the last one. Two release candidates follow in September and October before the November 10 general availability. The headline change: the dotnet CLI is now compiled with NativeAOT by default, taking dotnet tool list from 378ms to 68ms — a 5.5x speedup. It is also the change most likely to break something in your pipeline.
NativeAOT Is Now the Default CLI Runtime
Microsoft shipped the dotnet CLI itself as a NativeAOT binary starting in Preview 7. MSBuild server is also enabled by default, keeping a warm worker process alive between CLI invocations. The performance numbers are real: command startup times drop by a factor of five or more for common operations.
The tradeoff is compatibility. NativeAOT strips reflection capabilities that many .NET tools depend on. If your CLI plugins or tooling use System.Reflection.Emit, walk type graphs dynamically, or load assemblies at runtime, they will fail. Reflection-based serializers — still common in older .NET libraries — are affected. Dynamic PGO is also disabled in NativeAOT mode.
The opt-out is simple: set DOTNET_CLI_ENABLEAOT=false in your environment. This works per-session or in CI. Treat it as a temporary escape hatch, not a long-term fix. Microsoft is not going to walk this back — expect NativeAOT CLI to be the permanent default from here on out.
If you ship a global tool or a CLI plugin, now is the time to run it against Preview 7. The NativeAOT compatibility guide on the .NET Blog covers the annotation and trimming changes you will need. Better to find out now than in November when the whole ecosystem upgrades at once.
Three Months Left on .NET 8 and .NET 9
Here is the deadline that deserves more attention: .NET 8 and .NET 9 both reach end of support on November 10, 2026 — the same day .NET 11 ships. No security fixes. No servicing updates. After that date, running either version in production is a compliance and security liability.
.NET 8 is LTS. It still dies on November 10. Microsoft recommends moving to .NET 10 (LTS, supported through November 2028) if you are not ready to jump straight to .NET 11. Either way, the clock is running.
C# 15: Labeled Break and Continue
Preview 7 ships C# 15’s labeled loop control. Break and continue can now name an enclosing loop, letting you exit or skip an outer loop from inside an inner one — no boolean flag, no goto required.
outer: for (int row = 0; row < grid.Height; row++)
{
for (int col = 0; col < grid.Width; col++)
{
if (grid[row, col].IsBlocked) continue outer;
if (grid[row, col].IsGoal) break outer;
}
}
The feature lands alongside further union type pattern matching progress, where the compiler now applies Try-Both matching against union values. If you missed the union types introduction, the C# 15 language docs have the complete picture.
Async Methods Finally Get Tiered Compilation
This one is free. Async methods previously bypassed the tiered JIT pipeline — they always ran tier-0 code, compiled for compilation speed rather than throughput. Starting in Preview 7, async method bodies go through full tiering and get optimized at steady state. No code changes required. Web services with high async request volume will see throughput improvements just by upgrading.
dotnet test Gets Smarter
The test runner picks up several useful flags in Preview 7. --timeout kills a test run if it exceeds a time limit. --maximum-failed-tests stops execution after N failures — useful for fast-fail CI pipelines where hanging or cascading failures waste build minutes. The runner now shows a live display of in-flight tests and per-assembly counts as well.
What Else Shipped
Five new Blazor Roslyn analyzers were added to catch common component mistakes at compile time. The companion servicing release fixes 10 CVEs across .NET 8, 9, and 10 — two rated critical remote code execution vulnerabilities. Patch those regardless of your Preview 7 evaluation status.
What to Do Now
This is the last preview. The feature set is locked. Run your global tools and CLI plugins against it with NativeAOT enabled, and if they break, start migrating to AOT-compatible patterns now. Check the .NET 11 what’s new docs for the complete change list, and sort out your .NET 8 and .NET 9 upgrade plan if you have not already. November 10 is ninety days out.
The full release post is at devblogs.microsoft.com/dotnet.













