C# Weekly #2: C# Dev Kit 11.0 setzt auf Native AOT, MSTest 4.5 vereinheitlicht WinUI/UWP-Tests, C# 15 Unions in ASP.NET Core

C# · Weekly #2

C# Weekly #2: C# Dev Kit 11.0 setzt auf Native AOT, MSTest 4.5 vereinheitlicht WinUI/UWP-Tests, C# 15 Unions in ASP.NET Core

csharpC#WochenrückblickNative AOTC# Dev Kit

Quellen:GitHub Releases + 官方博客 + HN

📦 Versionen & Updates

Offizielle stabile Releases und Prüfung der Build-Pipelines

Die aktuellste stabile Version ist .NET 10.0.12 (veröffentlicht am 8. September 2026, einschließlich SDKs 10.0.401 und 10.0.112). Für Enterprise-Teams, die bestehende Produktionssysteme warten oder eine Migration vorbereiten, bietet unsere frühere Analyse der Kernfeatures von C# 14 einen fundierten Überblick über die Syntax- und Laufzeitänderungen der vorangegangenen Generation.

Parallel dazu verfügt .NET 11 Release Candidate 1 (RC 1) bereits über eine offizielle „Go-Live“-Supportlizenz für den Produktiveinsatz. RC 2 steht kurz bevor, gefolgt von der offiziellen Freigabe (GA) auf der .NET Conf 2026 im November.

Die wichtigsten aktuellen Anpassungen auf Laufzeit- und Abhängigkeitsebene im Überblick:

BereichRegelanpassungPraktische Auswirkungen im Betrieb
Erweiterte dynamische PGO-Abdeckung im JITBreitere Einfügepunkte für Tiered Compilation und dynamische profilgesteuerte Optimierung (PGO) verbessern das Inlining virtueller Methodenaufrufe.Der Durchsatz von Microservices mit hochfrequenten Interface- und Delegataufrufen steigt um 8 % bis 12 %; P99-Latenzschwankungen sinken spürbar.
Feature-Freeze für C# 15Native Union Types, erweitertes Pattern Matching und verbesserte Dekonstruktionssyntax gehen in die Stabilisierungsphase; Roslyn friert Syntaxänderungen ein.Der Boilerplate-Code für komplexe Aggregatergebnisse und Zustandsmaschinen im Domain-Driven Design (DDD) verringert sich drastisch.
Zertifikatswechsel bei NuGet-AutorensignaturenOffizielle Paketautorensignaturen nutzen einen neuen X.509-Fingerabdruck; alte Zertifikate signieren keine neuen Pakete mehr.Enterprise-CI-Pipelines mit erzwungener Signaturprüfung müssen den neuen Fingerabdruck ergänzen, um blockierende NU3034-Buildfehler zu vermeiden.

📝 Im Fokus

1. Architektur-Neuschreibung von C# Dev Kit 11.0: Native AOT bringt bis zu 180-fache Beschleunigung

Was geschah: Am 6. Oktober veröffentlichte Microsofts Entwicklerwerkzeug-Team die Vorabversion von C# Dev Kit 11.0. Die Versionsnummer übersprang Zwischenschritte und zog direkt mit .NET 11 gleich (zuvor Version 3.3). Das Release baut das Fundament der Erweiterung vollständig um: Sechs zuvor getrennte verwaltete Hintergrundprozesse wurden zu einer einzigen nativ kompilierten Native-AOT-Binary namens CSDevKit zusammengefasst. Gleichzeitig wurden ein persistenter Projekt-Cache und eine prioritäre Ladestrategie für aktive Dateien implementiert.

Warum es wichtig ist: Das bisherige Multi-Prozess-Modell musste beim Start jeden Prozess einzeln durch Antiviren-Scans des Betriebssystems schleusen, verwaltete Images von der Festplatte laden und JIT-Kompilierungen ausführen, was bei großen Projektmappen zu spürbaren Verzögerungen führte. In offiziellen Benchmarks mit der Projektmappe microsoft/aspire (407 Projekte, 4.686 C#-Dateien) sank die Zeit bis zur Bereitschaft von Code-Vervollständigung und Diagnostik der aktiven Datei von 84,1 Sekunden auf 0,47 Sekunden – eine 180-fache Beschleunigung. Die vollständige Bereitschaft der gesamten Projektmappe fiel von 84,1 auf 3,0 Sekunden (28-mal schneller), während der residente Speicherbedarf von 2.072 MB auf 316 MB sank (ein Minus von 85 %). Bei dotnet/orleans (155 Projekte) verkürzte sich die Bereitschaft der aktiven Datei von 50,3 auf 0,53 Sekunden (95-mal schneller) und die Speichernutzung sank von 1.307 MB auf 208 MB (84 % weniger). Inkrementelle Builds ohne Änderungen fielen von 34,4 auf 0,88 Sekunden (39-mal schneller), und Builds bei Ein-Datei-Änderungen von 36,1 auf 2,1 Sekunden (17-mal schneller). Zudem bietet die Erweiterung nun native Vervollständigung und Diagnosen für MSBuild-Dateien (.csproj, .props, .targets) sowie das Konfigurationsprüftool C# Doctor.

Wer profitiert: Entwickler, die schlanke Editoren wie VS Code oder Cursor nutzen, sowie autonome KI-Coding-Agenten, die Sprachserver für Workspace-Scans parallel und hochfrequent abfragen.

Quelle: A faster, lighter C# Dev Kit


2. MSTest 4.5 und MTP 2.5: Einheitlicher UI-Dispatcher und Pipe-Autorisierung für WinUI 3 & UWP

Was geschah: Am 5. Oktober stellte das .NET-Team MSTest 4.5 und Microsoft.Testing.Platform (MTP) 2.5 vor und präsentierte eine vereinheitlichte Testarchitektur für WinUI-3- und UWP-Desktopanwendungen. Die neue Version führt das native Attribut [UITestMethod] ein, das sich direkt an die reale DispatcherQueue des Fensters bindet und Altlasten wie Microsoft.NET.Test.Sdk, vstest.console sowie Visual-Studio-spezifische Deployment-Runtimes ablöst.

Warum es wichtig ist: UI-Tests auf dem Desktop erfordern, dass Testinitialisierung, asynchrone Testabläufe und Ressourcenbereinigung zwingend auf dem echten UI-Thread ablaufen. Herkömmliche STA-Hintergrundthreads bieten keine korrekte Dispatcher-Warteschlange. MSTest.Sdk integriert einen leichtgewichtigen Sidecar-Controller, der Testläufe je nach Projekttyp automatisch steuert: Nicht paketierte (Unpackaged) Apps starten direkt im Prozess, während paketierte sowie isolierte (AppContainer) Apps über den Controller via AUMID aktiviert werden. Für die Sicherheitsisolation im AppContainer schließt die Sidecar-Pipe globale Wildcard-Rechte aus und autorisiert ausschließlich die SID des Zielpakets für Testberichte, Abbruchsteuerung und Hang-Dump-Erfassung. Für Modern UWP (UseUwp) unterstützt das Framework native Kompilierung mittels PublishAot=true, was eine exakte Übereinstimmung zwischen Testumgebung und Produktions-Binary sicherstellt.

Wer profitiert: Windows-Client-Entwickler sowie Engineering-Teams, die automatisierte UI-Abnahmetests in Headless-CI/CD-Containern betreiben.

Quelle: UWP and WinUI 3 apps: UI testing with MSTest


3. Native Union Types in C# 15: Durchgängige Integration in ASP.NET Core

Was geschah: Das .NET-Architekturteam stellte den Entwurf zur Integration nativer C# 15 Union Types in Web-Frameworks vor. Auf Sprachebene lassen sich Typen wie public union IntOrString(int, string); deklarieren und in ASP.NET Core Minimal APIs, MVC-Controllern, SignalR und Blazor direkt als Routenrückgabewerte oder Request-Payloads verwenden.

Warum es wichtig ist: In modernen API-Spezifikationen kommt es häufig vor, dass ein Feld mehrere gültige Datentypen annehmen kann – etwa bei Kubernetes-Parametern wie maxUnavailable, die entweder eine Ganzzahl oder eine Prozentangabe als String akzeptieren. Bislang erforderte dies in C# aufwendige generische Wrapper-Typen, implizite Konvertierungsoperatoren oder rohe object-Typen mit dynamischer Reflection, was zu Boilerplate und Heap-Allokationen führte. Native Union Types in C# 15 schränken die Menge der gültigen Typen zur Compile-Zeit ein, führen bei Zuweisung verlustfreie implizite Konvertierungen durch und erzwingen vollständige Pattern-Matching-Zweige via switch-Ausdrücke. Auf Netzwerkebene erzeugt System.Text.Json reflexionsfreie Deserialisierer und generiert automatisch OpenAPI-konforme oneOf-Dokumentationen, wodurch manueller DTO-Mapping-Aufwand entfällt.

Wer profitiert: Backend-Entwickler von Hochdurchsatz-APIs sowie Systemarchitekten, die polymorphe Datenaustauschverträge zwischen Microservices definieren.

Quelle: Use C# unions and closed hierarchies in ASP.NET Core


4. Zertifikatsrotation bei Microsoft NuGet: Defensive Strategie für Unternehmens-CIs

Was geschah: Ende September leitete das NuGet-Team von Microsoft die Erneuerung der X.509-Zertifikate für Autorensignaturen ein. Der neue Standard-SHA-256-Fingerabdruck lautet 9A1B131BEE0605433056A4EA3815478A8E177961A968C6C0027C1093D1FEB630 und löst den langjährigen Fingerabdruck 566A31882BE208BE4422F7CFD66ED09F5D4524A5994F50CCC8B05EC0528C1353 ab.

Warum es wichtig ist: Bestehende Pakete lassen sich weiterhin über das alte Zertifikat validieren, neu veröffentlichte offizielle Microsoft-Abhängigkeiten werden jedoch ausschließlich mit dem neuen Schlüssel signiert. Unternehmen mit strengen Supply-Chain-Sicherheitsrichtlinien erzwingen in der nuget.config die Einstellung signatureValidationMode="require" oder nutzen dotnet nuget verify. Fehlt der neue Fingerabdruck in den CI-Pipelines, bricht der Bezug neuer Abhängigkeiten mit dem Fehler NU3034 ab. Teams sollten den neuen Fingerabdruck mittels dotnet nuget trust author Microsoft 9A1B131BEE0605433056A4EA3815478A8E177961A968C6C0027C1093D1FEB630 --algorithm SHA256 explizit hinterlegen und historische Einträge beibehalten, um ältere Paketversionen weiterhin wiederherstellen zu können.

Wer profitiert: Infrastruktur-Sicherheitsteams, DevOps-Build-Ingenieure und Administratoren privater NuGet-Mirror-Repositories.

Quelle: Microsoft is updating its author-signing certificate


🔥 Community-Diskussionen

1. C# Dev Kit 11.0 Architektur-Upgrade: Lob für Performance, Kritik am Wegfall des Solution Explorers

In der Reddit-Community r/dotnet diskutierten Entwickler intensiv über den Benchmark-Bericht von Microsoft-Ingenieur Drew Noakes (191 Punkte, 93 Kommentare, parallel auf Hacker News mit 4 Punkten).

Kernpunkte der Debatte:

  • Befürworter von Performance und Agent-Workflows: Entwickler lobten die extrem schnellen Ladezeiten bei großen Repositories wie Orleans und Aspire. Mehrere Nutzer merkten an, dass in Workflows mit KI-Coding-Agenten häufig mehrere Git-Worktrees und Container parallel betrieben werden. Die frühere 6-Prozess-Architektur führte bei jedem Branch-Wechsel zu langen Wartezeiten und belegte 2 GB RAM. Die neue Single-Process-Native-AOT-Binary und der Festplatten-Cache machen den Neustart und Parallelbetrieb nun fast verzögerungsfrei.
  • Kritik am Wegfall des Solution Explorers: Entwickler, die stark auf virtuelle Projektmappen-Ordner (Solution Folders) setzen, kritisierten die Entfernung der separaten Solution-Explorer-Seitenleiste. Da der Standard-Dateiexplorer von VS Code die virtuellen .sln-Verzeichnisbäume nicht abbildet, funktioniert die Kontextfunktion „Klasse hinzufügen“ nicht mehr wie gewohnt: Neue Dateien landen häufig im physischen Stammverzeichnis statt im korrekten Namensraum-Ordner.

Quelle: r/dotnet: A faster, lighter C# Dev Kit


2. Dynamisches Laden von Managed-Plugins in Native-AOT-Hosts: Debatte um Plum und Hybrid-Architekturen

Im monatlichen Projekt-Showcase auf r/csharp entbrannte eine Architekturdebatte rund um das Plugin-Framework Plum.

Funktionsweise und Positionen:

  • Technische Funktionsweise: Plum richtet sich an hochperformante Native-AOT-Anwendungen und nutzt den nativen Einstiegspunkt HostFXR der .NET-Runtime, um CoreCLR direkt im Hauptprozess dynamisch hochzufahren. Ein benutzerdefinierter Assembly Loader lädt anschließend reflexionsbasierte Plugin-Assemblies und bindet deren Schnittstellen direkt an den AOT-Host an.
  • Architektonische Gegensätze:
    • Die pragmatischen Hybrid-Befürworter: Betonen, dass Drittanbieter-Ökosysteme im Desktop- und Steuerungsbereich dynamische Reflection und Reflection.Emit kurzfristig nicht aufgeben können. Das bedarfsweise Bootstrapping von CoreCLR über HostFXR sichere die extrem schnelle Startzeit des AOT-Hauptprogramms und erhalte gleichzeitig die Erweiterbarkeit über Plugins.
    • Die Verfechter reiner statischer Architekturen: Halten dagegen, dass die parallele Koexistenz von nativem Speichermodell und CLR-Garbage-Collection (GC) im selben Prozess das Debuggen von Abstürzen massiv erschwere und Risiken für hängende Zeiger über Laufzeitgrenzen hinweg berge. Modernes C# solle konsequent auf statische Kompilierung setzen und Plugins zur Build-Zeit über Source Generators verknüpfen, um Wartungsaufwände dualer Runtimes zu vermeiden.

Quelle: r/csharp: Come discuss your side projects! (October 2026)


Ausblick

  • 10. Oktober (Dienstag) Reguläres Patch-Fenster: Microsofts monatlicher Patchday bringt Servicing-Updates für .NET 10.0.13 und .NET 8.0 mit Sicherheitskorrekturen und Stabilitätsverbesserungen für die Laufzeitumgebung. Teams mit eigenen Container-Basis-Images sollten Aktualisierungen einplanen.
  • .NET 11 RC 2 Countdown: Der finale Release Candidate 2 für .NET 11 steht kurz vor der Veröffentlichung. Als letzter Meilenstein vor dem offiziellen GA-Release auf der .NET Conf 2026 im November sind die öffentlichen APIs vollständig eingefroren. Entwickler zentraler Bibliotheken sollten abschließende Regressionstests in gesicherten Umgebungen durchführen.