Der .NET 11 Tracker
Ein Bookmark für den gesamten .NET 11 Zyklus.
Diese Website nutzt Walter, einen KI-Agenten, für Recherche, Texte und Pflege. Redaktion und Überprüfung
Am 2. November 2026 ist .NET 11 RC3 der aktuelle Release Candidate. Microsoft veröffentlichte ihn am 25. Oktober als außerplanmäßiges Sicherheitsupdate. Die Support-Richtlinie nennt den Go-live-Status und das Supportfenster. .NET 11 ist ein STS-Release (Standard Term Support). Beim Wechsel von .NET 8 LTS ist dieser Unterschied für den nächsten Upgrade-Termin relevant.
Korrektur, 2. November 2026. Die frühere englische Fassung nannte RC2 als neuesten Stand und bezeichnete den Wechsel von .NET 8 auf 11 als LTS-zu-LTS. Der Index verwendet jetzt .NET-11-Tags, damit Beiträge zu anderen Versionen nicht allein über ein allgemeines .NET-Tag erscheinen.
Release und Laufzeit
Für RC2 siehe inkrementelles CBOR-Parsen. Zu RC1 gehören reproduzierbare Container-Images, Prozesssignale und SignalR-Authentifizierung. Laufzeitthemen sind Devirtualisierung generischer Methoden, Aufrufkonventionen für Structs und CPU-Kompatibilität.
Ein Upgrade planen und prüfen
Beginnen Sie mit der Checkliste für .NET 8 oder dem Leitfaden für .NET Framework 4.8. In größeren Lösungen sind SDK-Auswahl und zentrale Paketverwaltung wichtig. Beim Wechsel des Test-Runners helfen Microsoft.Testing.Platform, Exitcode 5 und VSTest-Fallback.
Mit WebApplicationFactory und Testcontainers entscheiden Sie, welches HTTP- und Datenbankverhalten ein Integrationstest abdecken soll. Bei Datenmigrationen zeigt die Enum-zu-String-Konvertierung, weshalb numerische Zeichenfolgen und Namen zu anderen Abfrageergebnissen führen können. Für die Nachverfolgung authentifizierter Requests siehe Benutzer-ID im Logging.
Themenindex
Der chronologische Index wählt Beiträge mit .NET-11-Versionstags aus. Spezifische Referenzen bieten EF Core 11 und C# 14.
Index (319 Beiträge)
2026 / 10
- .NET 10.0.14 erscheint außerhalb des Zyklus: Brotli-Dekomprimierungs-Overflow und zwei erneut veröffentlichte Oktober-CVEs
Das Out-of-Band-Release vom 25. Oktober 2026 (.NET 8.0.33, 9.0.22, 10.0.14, 11 RC3) behebt einen Brotli-Pufferüberlauf, einen Fehler bei der Eigentümerschaft in Linux-Tarballs und zwei CVEs, die die Patches vom 13. Oktober nicht vollständig geschlossen haben.
- Wie man eine selbstreferenzierende Many-to-Many-Beziehung (Followers/Following) in EF Core konfiguriert
Followers und Following auf einer einzelnen User-Entität in EF Core 11 modellieren: was die Konvention erzeugt, warum SQL Server einen Join-Fremdschlüssel stillschweigend zu ClientCascade macht, wie man eine explizite Follow-Join-Entität mit Zeitstempel abbildet und wie man einen User ohne Fehler 547 oder 1785 löscht.
- Wie Sie die Antwort einer Controller-Action im integrierten OpenAPI-Dokument von ASP.NET Core als nullbar markieren
Microsoft.AspNetCore.OpenApi markiert eine Antwort nur dann als nullbar, wenn die Action ein reines T? zurückgibt (und unter .NET 10 nicht einmal Task<T?>). ActionResult<T?> und IActionResult verlieren die Annotation sowohl unter .NET 10 als auch unter .NET 11 RC2. Hier steht der Grund, ein getesteter Operation Transformer, der das behebt, und die Falle mit 204 No Content, durch die die Spezifikation lügt, wenn Sie nicht auch den Formatter von MVC ändern.
- Zahlen mit indischer Lakh/Crore-Ziffern-Gruppierung in .NET formatieren (NumberGroupSizes)
Verwenden Sie die Kultur en-IN oder setzen Sie NumberFormatInfo.NumberGroupSizes auf [3, 2], um in C# 12,34,56,789 statt 123,456,789 auszugeben. Gemessen auf .NET 10 und .NET 11 RC1: wie das Array funktioniert, warum CurrencyGroupSizes getrennt ist, die Invariant-Globalization-Falle, die stillschweigend westliche Gruppierung ausgibt, und ein Hilfsmittel für Lakh/Crore-Wörter.
- Einzelne von MapIdentityApi abgebildete Endpunkte in ASP.NET Core entfernen oder ausblenden
MapIdentityApi<TUser>() bildet zehn Endpunkte ab und bietet keinen Schalter, um einen davon auszulassen. Hier sind vier gemessene Wege unter .NET 11: einen Endpunkt aus OpenAPI ausblenden, ihn 404 zurückgeben lassen, ihn überlagern oder ihn komplett aus dem Routing entfernen, plus die /confirmEmail-Falle, die die Registrierung in einen 500-Fehler verwandelt.
- Was ist ref-safe-context in C#, und wie bestimmt der Compiler ihn für ref-Lokalvariablen?
C#-Escape-Regeln für Referenzen verstehen: compilergeprüfte Beispiele zu ref-Lokalvariablen, Neuzuweisung, scoped und Heap- gegenüber Stack-Spans.
- .NET 11 RC 2: CborReader parst eine Nutzlast Chunk für Chunk
System.Formats.Cbor 11.0.0-rc.2 ergänzt CborReader um isFinalBlock, NeedsMoreData und SlideData. So decodieren Sie CBOR direkt aus einem Stream, ohne das ganze Dokument zu puffern. Geprüft mit SDK 11.0.100-rc.2.
- Fix: FileInfo.Length liefert unter Windows eine veraltete Größe für eine Datei, die noch geschrieben wird
FileInfo speichert seine Größe zwischen, die Enumeration liest den verzögert aktualisierten NTFS-Verzeichniseintrag, und der Schreiber hält Bytes womöglich noch in eigenen Puffern. Refresh() hilft, besser ist es, die Länge über ein Shared Handle mit RandomAccess.GetLength zu lesen.
- Fix: Settings file 'DotnetToolSettings.xml' was not found in the package
Das Tool-Paket zielt auf ein neueres .NET als das SDK, das die Installation ausführt, oder es ist gar kein .NET-Tool. Verwenden Sie ein neueres SDK, pinnen Sie eine Tool-Version mit kompatiblem tools-Ordner oder erzwingen Sie --framework.
- Verschachtelte Klammern und ausgewogene Tags mit Balancing Groups in .NET Regex abgleichen
Balancing Groups (?<name>) und (?<-name>) machen aus einer .NET-Regex-Capture-Gruppe einen Stack, sodass ein einziges Muster beliebig tief verschachtelte Klammern oder <div>-Tags erfassen kann. Das vollständige Muster, die Funktionsweise des Stacks, die Erfassung des inneren Inhalts mit (?<inner-open>) und die auf .NET 11 RC1 geprüften Stolperfallen: die Prüfung auf leeren Stack, katastrophales Backtracking, NonBacktracking und gemischte Klammertypen.
- Was ist ein Compiled Model in EF Core 11, und wann lohnt sich die Aktivierung?
Ein Compiled Model ist generierter C#-Code, der Ihr EF Core Modell ohne Ausführung von OnModelCreating neu aufbaut. Gemessen mit EF Core 11 RC1: Das Laden des Modells sinkt bei 500 Entitäten von 714 ms auf 215 ms, aber der MSBuild-Weg (der EFOptimizeContext ersetzt hat) ist langsamer, veraltete Modelle schlagen unbemerkt fehl und Query Filter verhindern die Generierung.
- Was ist Transparent Struct Layout, und warum ändert ein Wrapper-Struct mit einem einzigen Feld die Aufrufkonvention in .NET?
Ein transparentes Struct wird von der ABI exakt wie sein einziges Feld behandelt. .NET 11 bietet diese Garantie nicht: Ein Struct, das ein double kapselt, wird unter Windows x64 in RCX übergeben, unter Linux und macOS aber in XMM0. Hier sind das Disassembly des .NET-11-JIT für drei ABIs, die daraus entstehenden P/Invoke-Fehler und wie Sie Wrapper-Typen schreiben, die an jeder Grenze sicher sind.
- Was ist eine Shadow Property in EF Core 11, und warum taucht eine in meiner Migration auf?
Eine Shadow Property ist eine Spalte, die EF Core ohne passende CLR-Eigenschaft verfolgt. Hier steht, warum EF Core 11 sie erzeugt (fehlende FK-Eigenschaften, falsch benannte FKs, Typkonflikte, doppelt konfigurierte Beziehungen), wie Sie die BlogId1-Variante in einer Migration erkennen, wie Sie jede Ursache beheben und wie Sie Shadow Properties gezielt einsetzen.
- AddDbContextPool vs AddDbContextFactory: EF Core-Abfragen parallel ausführen
AddDbContextPool liefert pro DI-Scope genau einen Scoped-DbContext und kann daher nicht zwei Abfragen gleichzeitig ausführen. AddDbContextFactory und AddPooledDbContextFactory liefern pro Aufruf einen Kontext, was parallele Abfragen brauchen. Gemessen mit EF Core 11 RC 1: Die gepoolte Factory erzeugt einen Kontext in 342 ns und 40 B gegenüber 17 us und 44 KB.
- C# Dev Kit 11.0 fasst sechs Prozesse in einer Native-AOT-Binärdatei zusammen
Die Pre-Release von C# Dev Kit 11.0 ersetzt sechs verwaltete Prozesse durch einen einzigen Native-AOT-Prozess namens CSDevKit und einen persistenten Projekt-Cache. Eine Aspire-Solution mit 407 Projekten ist nach 3,0 s bereit statt nach 84,1 s und benötigt 316 MB statt 2.072 MB.
- Fix: CS8509 oder CS0161 bei einem switch, der über einen C# 15 Union-Typ exhaustiv ist
Schalten Sie auf den Union-Wert statt auf .Value und verwenden Sie einen switch-Ausdruck oder ergänzen Sie in einer switch-Anweisung case null. Anweisungen brauchen Null-Abdeckung, bei Ausdrücken gibt es nur eine Warnung.
2026 / 09
- Fix: Umgebungsvariablen aus launchSettings.json werden für ein Profil mit commandName: Executable ignoriert
Wenn Ihr Executable-Profil dotnet run oder dotnet watch startet, wendet der innere Befehl das Standardprofil an und überschreibt Ihre Variablen. Fügen Sie --no-launch-profile hinzu und verwenden Sie SDK 10.0.200+.
- Blazor erhält agentische UI-Komponenten in .NET 11 RC1: ChatPage, UIAgent und Tool-Genehmigungen
Microsoft.AspNetCore.Components.AI ist ein experimentelles Blazor-Paket in .NET 11 RC1, das jeden IChatClient in eine Streaming-Chat-Oberfläche mit Tool-Genehmigungen, typisiertem Tool-Rendering und gemeinsamem Zustand über AG-UI verwandelt.
- Fix: dotnet watch Blazor Hot Reload, WebSocket schlägt auf einer eigenen lokalen Domain fehl (403)
Seit den .NET SDKs vom September 2026 (10.0.112, 10.0.401, 11 RC1) lehnt dotnet watch Browser-Refresh-WebSockets von unbekannten Origins ab. Setzen Sie DOTNET_WATCH_AUTO_RELOAD_WS_ORIGINS auf Ihren Hostnamen.
- Einen eindeutigen Index für eine JSON-gemappte Eigenschaft in EF Core 11 anlegen (SQL Server und SQLite)
HasIndex(...).IsUnique() auf einem ToJson()-Member erzwingt in EF Core 11 RC 1 keine Eindeutigkeit: SQL Server verwirft IsUnique und SQLite indiziert das gesamte Dokument. Legen Sie den JSON-Wert stattdessen als berechnete Spalte offen und setzen Sie den eindeutigen Index darauf.
- Fix: IConfiguration.Bind befüllt eine Array- oder List<T>-Eigenschaft aus appsettings.json nicht
Der Binder überspringt stillschweigend Array-Eigenschaften ohne öffentlichen Setter, get-only IReadOnlyList<T>, Felder und init-only-Member unter dem Source Generator, und er hängt an Standardwerte an, statt sie zu ersetzen. Gemessen auf .NET 10.0.12 und 11 RC 1.
- Öffentliche Felder wie Vector3 und Quaternion mit System.Text.Json serialisieren
System.Text.Json schreibt Vector3 als {} und Quaternion als {"IsIdentity":false}, weil beide ihre Daten in öffentlichen Feldern speichern. So beheben IncludeFields, ein eigener Converter, ein Resolver-Modifier und Source Generation das Problem, gemessen auf .NET 10 und .NET 11 RC 1.
- So deaktivieren Sie die Antiforgery-Validierung für einen einzelnen Minimal-API-Formularendpunkt in ASP.NET Core 11
Rufen Sie .DisableAntiforgery() auf dem einen Endpunkt oder auf einer MapGroup auf. In ASP.NET Core 11 nimmt das den Endpunkt sowohl aus der Token-Middleware als auch aus der neuen automatischen CSRF-Prüfung heraus. Gemessene Matrix, Fallen bei der Rangfolge und engere Alternativen.
- Eigene Pluralisierung von Tabellennamen für dotnet ef dbcontext scaffold mit IPluralizer hinzufügen
Eine Tabelle namens Gas wird zu einer Entität namens Ga gescaffoldet. Ersetzen Sie den eingebauten Humanizer-Pluralizer durch einen eigenen IPluralizer, registrieren Sie ihn über IDesignTimeServices im Startprojekt, und erfahren Sie, warum TryAddSingleton dort stillschweigend nichts tut.
- Idempotente Nachrichtenverarbeitung mit EF Core 11 garantieren, wenn zwei App-Instanzen dieselbe Nachricht konsumieren
Die Existenzprüfung in Ihrem Handler ist nicht der Schutz, für den Sie sie halten. Legen Sie einen eindeutigen Index auf die Inbox-Tabelle, schreiben Sie den Marker im selben SaveChanges wie die fachliche Änderung, und lassen Sie die Datenbank den Gewinner bestimmen. Dazu die ExecuteUpdate-Falle, die all das stillschweigend aushebelt.
- Wie Sie einen Datenbankschreibvorgang und einen Azure Blob Storage Upload in einer einzigen ASP.NET-Core-Anfrage konsistent halten
Es gibt keine Transaktion, die SQL Server und Blob Storage umspannt. Laden Sie unter einen Namen hoch, den die Datenbank bereits kennt, committen Sie danach, kompensieren Sie im Fehlerfall, und lassen Sie einen Sweeper das Absturzfenster aufräumen. Inklusive der UploadAsync-Überladung, die ein bedingtes Erstellen still in ein Überschreiben verwandelt.
- Eigene Namenskonventionen für Primärschlüssel, Fremdschlüssel und Indizes in EF Core 11 Migrationen anwenden
Benennen Sie jedes PK_, FK_, AK_ und IX_, das EF Core 11 erzeugt, mit einer einzigen IModelFinalizingConvention um, lassen Sie explizite Namen weiterhin gewinnen, bleiben Sie unter der Längengrenze für Bezeichner und vermeiden Sie den Neuaufbau des Clustered Index, den die nächste Migration auf einer bestehenden Datenbank erzeugt.
- Eine EF Core Cosmos-App nach der Änderung am Escaping generierter ids in EF Core 11 migrieren
EF Core 11 escapt '/', '\', '?' und '#' in generierten Cosmos DB id-Werten nicht mehr, daher werden Dokumente, die EF Core 8-10 geschrieben hat, nicht mehr über den Schlüssel gefunden. Wie Sie herausfinden, ob Sie betroffen sind, wann Sie den Schalter EscapeIllegalCosmosIdCharacters setzen und wie Sie die ids mit einem Transactional Batch sicher neu schreiben.
- Microsoft.Data.SqlClient vs System.Data.SqlClient in .NET 11
Verwenden Sie Microsoft.Data.SqlClient. System.Data.SqlClient ist veraltet, meldet bereits CS0618 bei jedem Typ, den Sie anfassen, und verliert seine .NET-Assets, wenn .NET 8 am 2026-11-10 das Supportende erreicht, am selben Tag, an dem .NET 11 erscheint. Die gemessene Funktionslücke, der Encrypt-Standardwert, der die Migration bricht, und die Paketaufteilung in 7.0.
- Process.Run vs Process.Start in .NET 11: was sollten Sie verwenden?
Verwenden Sie Process.Run, wenn Sie ein Tool starten und nur wissen wollen, wie es beendet wurde: ein Aufruf, ein Timeout, der den Kindprozess beendet, und ein ProcessExitStatus mit dem Signal. Bleiben Sie bei Process.Start, wenn Sie das Process-Objekt brauchen: Schreiben nach stdin, Lesen der Ausgabe während sie eintrifft, UseShellExecute oder das Beenden eines ganzen Prozessbaums.
- Der JIT in .NET 11 devirtualisiert generische virtuelle Methoden, und die Allokation verschwindet gleich mit
Stephen Toubs Artikel Performance Improvements in .NET 11 zeigt Aufrufe generischer virtueller Methoden, die von 6,7 ns und 24 Byte auf 1,8 ns und null Allokationen fallen. Drei RyuJIT-Pull-Requests haben Inlining bei dem Dispatch freigeschaltet, der in .NET bisher der undurchsichtigste war.
- SQL Server Kompatibilitätsgrad 150 vs 160: Was sich für Abfragen in EF Core 11 ändert
EF Core 11 setzt UseSqlServer jetzt standardmäßig auf Kompatibilitätsgrad 160. Damit landen LEAST, GREATEST und LTRIM/RTRIM mit zwei Argumenten in Ihrem SQL, auch bei jedem Take(n).FirstOrDefault(). Bleiben Sie auf SQL Server 2022 und neuer bei 160; legen Sie UseCompatibilityLevel(150) fest, wenn noch irgendeine Umgebung SQL Server 2019 betreibt.
- Lösung: Could not load file or assembly 'Microsoft.Data.SqlClient, Version=7.0.0.0' nach dem Update von EF Core
EF Core 11 ist gegen Microsoft.Data.SqlClient 7.0.0.0 kompiliert, aber beim Restore oder Deployment hat sich eine 6.x-Kopie durchgesetzt. Entfernen Sie den alten SqlClient-Pin und stellen Sie die vollständige Ausgabe neu bereit.
- ZIP-Dateien in .NET 11 asynchron mit den ZipArchive-Async-APIs erstellen und extrahieren
ZipFile.CreateFromDirectoryAsync, ExtractToDirectoryAsync, ZipArchive.CreateAsync und ZipArchiveEntry.OpenAsync ohne verstecktes synchrones I/O verwenden. Gemessen auf .NET 11 RC 1 und .NET 10.0.12, einschließlich des .NET 10-Bugs, der Kestrel weiterhin blockiert.
- So binden Sie ein komplexes Query-String-Objekt mit [AsParameters] in einer Minimal API in ASP.NET Core 11
Setzen Sie [AsParameters] auf eine Klasse oder einen Record, um einen kompletten Query-String-Filter in einer Minimal API in ASP.NET Core 11 zu binden. Behandelt Standardwerte, Arrays, Enums, verschachtelte Objekte, Validierung, OpenAPI und einen Bug im Native-AOT-Generator bei positionellen Records.
- R8-Shrinking und Obfuskierung für einen .NET MAUI Android Release-Build aktivieren
AndroidLinkTool auf r8 setzen, Trimming eingeschaltet lassen und eine ProguardConfiguration-Datei hinzufügen. Warum .NET 10 und .NET 11 RC 1 weiterhin nicht obfuskierten Java-Code ausliefern, wie die neue Eigenschaft AndroidR8ObfuscationMode das ändert und wie Sie prüfen, ob R8 tatsächlich gelaufen ist.
- Die Android-Zurück-Taste auf einer Root-Seite in .NET MAUI Shell abfangen
Überschreiben Sie OnBackButtonPressed auf der Root-Seite und verwenden Sie .NET MAUI 10.0.101 oder neuer. Warum Root-Seiten ab 10.0.70 (Android 16) und 10.0.100 (jede Android-Version) keine Zurück-Eingaben mehr erhielten, warum .NET 11 RC 1 weiterhin betroffen ist, warum Shell.OnNavigating und BackButtonBehavior.Command nicht helfen, und ein MainActivity-Workaround für die fehlerhaften Versionen.
- .NET 11 RC 1 macht Container-Images aus dotnet publish reproduzierbar
Das .NET 11 RC 1 SDK berücksichtigt SOURCE_DATE_EPOCH beim Veröffentlichen von Container-Images, entfernt die Prozess-ID aus den Tar-Headern der Layer und überspringt Blob-Uploads, wenn die Registry das Manifest bereits hat. Gleicher Commit rein, gleicher Digest raus.
- So escapen Sie die Platzhalter % und _ in EF.Functions.Like- und StartsWith-Abfragen in EF Core 11
StartsWith, EndsWith und Contains escapen % und _ in EF Core 11 bereits für Sie, EF.Functions.Like dagegen nicht. Hier sehen Sie das SQL, das EF erzeugt, einen wiederverwendbaren Escape-Helper und die escapeCharacter-Überladung, mit der es auf SQL Server, SQLite und PostgreSQL funktioniert.
- Native json-Spalte vs. nvarchar(max) zum Speichern von JSON in SQL Server mit EF Core 11
Verwenden Sie den nativen json-Typ auf SQL Server 2025 und Azure SQL: EF Core 11 holt daraus JSON_CONTAINS, typisiertes JSON_VALUE, In-place-modify() und JSON-Indizes heraus. Bleiben Sie bei nvarchar(max) für SQL Server 2019/2022, ältere Tools oder ein Schema, das Sie zurückrollen können müssen.
- Lookup<TKey, TElement> vs Dictionary<TKey, List<TValue>> für doppelte Schlüssel in C#
Verwenden Sie ToLookup, wenn Sie einmal gruppieren und danach nur lesen: Es ist unveränderlich, liefert für fehlende Schlüssel eine leere Sequenz, akzeptiert null-Schlüssel und behält die Reihenfolge des ersten Auftretens bei. Verwenden Sie Dictionary<TKey, List<TValue>>, wenn sich die Gruppen nach der Erstellung ändern oder eine JSON-Grenze überqueren.
- C#-Unions in ASP.NET Core 11: Bodys, SignalR und OpenAPI funktionieren, Query Strings nicht
Das ASP.NET Core-Team hat kartiert, wo C# 15-Union-Typen in .NET 11 funktionieren: Bodys in Minimal APIs und MVC, das JsonHubProtocol von SignalR, Blazor und anyOf-Schemas in OpenAPI. Binding aus Route, Query, Headern und Formularen wird noch nicht unterstützt.
- SignalR in .NET 11 RC 1 tauscht ein ablaufendes Token aus, ohne die Verbindung zu trennen
Die SignalR-APIs zur Authentifizierungsaktualisierung sind in .NET 11 RC 1 finalisiert, mit umbenannten Callbacks an HubConnection, einem TypeScript-Client und Blazor-Server-Circuits, die den aktualisierten ClaimsPrincipal automatisch übernehmen.
- .NET 11 RC 1 sendet SIGTERM an einen Kindprozess ohne P/Invoke
Signal, WaitForExitStatus und ProcessExitStatus landen in .NET 11 RC 1 direkt auf System.Diagnostics.Process, sodass das saubere Beenden eines Kindprozesses weder ein P/Invoke auf kill noch einen Umweg über SafeProcessHandle braucht.
- Eine ProblemDetails-Antwort nach RFC 9457 mit einem typisierten HttpClient lesen, ohne ASP.NET Core zu referenzieren
Die BCL kennt keinen ProblemDetails-Typ, und ein FrameworkReference auf Microsoft.AspNetCore.App sorgt dafür, dass Ihr Client in einem Container mit reiner Laufzeit gar nicht erst startet. Hier ist das 20-Zeilen-Modell, der DelegatingHandler, der problem+json in eine typisierte Ausnahme verwandelt, und der Content-Type-Mythos, den die meisten Antworten bis heute wiederholen.
- Die async-void-Handler finden, die ANRs in einer .NET MAUI Android-App verursachen
Die Play Console meldet eine ANR-Rate über 0,47% und liefert einen nativen Stack Trace voller libcoreclr.so-Frames. So kommen Sie von diesem nutzlosen Trace zu genau dem async-void-Ereignishandler, der den Main-Thread blockiert hat: mit einem Looper-Printer, einem SynchronizationContext-Wrapper, der die Zustandsmaschine benennt, und dotnet-trace über dsrouter.
- Pessimistisches Sperren mit UPDLOCK und SELECT ... FOR UPDATE in EF Core 11
EF Core 11 hat immer noch keine Sperr-API. So nehmen Sie eine echte Zeilensperre mit FromSql: WITH (UPDLOCK, ROWLOCK) auf SQL Server, FOR UPDATE auf PostgreSQL, die Unterabfragen-Falle, die die Sperre unbemerkt ausweitet, NOWAIT und SKIP LOCKED, Deadlock-Wiederholungen und was zu tun ist, wenn die Zeile noch nicht existiert.
- Wie Sie einen EF Core 11 Value Converter schreiben, der ein null aus der Datenbank auf einen Nicht-null-Wert im Code abbildet
EF Core übergibt standardmäßig niemals null an einen Value Converter. Hier ist der interne convertsNulls-Konstruktor, der das ändert, der IsRequired(false)-Aufruf, von dem er abhängt, warum er für Enums und andere Werttypen nicht funktionieren kann, die WHERE col = NULL Falle, die er erzeugt, und die zwei Muster, die die Aufgabe ohne interne API lösen.
- Was ist ein Blazor-Rendermodus und welcher führt meine Komponente aus?
Ein Rendermodus entscheidet, wo eine Razor-Komponente ausgeführt wird und ob sie interaktiv ist. Hier sind die vier Modi in .NET 11, die Vererbungsregeln, die bestimmen, was Ihre Komponente erbt, und die Eigenschaften RendererInfo und AssignedRenderMode, die zur Laufzeit verraten, welcher Modus gewonnen hat.
- Was ist ein EF Core Interceptor und wann brauchen Sie einen?
Ein EF Core Interceptor ist eine Klasse, die EF vor und nach Operationen wie dem Ausführen eines Befehls oder SaveChanges aufruft und die diese verändern oder unterdrücken kann, nicht nur beobachten. Hier sind die sieben Interception-Punkte in EF Core 11, die Registrierungs- und Lebensdauerregeln und die Fälle, in denen ein Query-Filter oder schlichte Protokollierung die bessere Antwort ist.
- Eine .NET MAUI Android-App auf API-Level 36 migrieren
Google Play verlangt seit 2026-08-31 das Ziel-API-Level 36, Verlängerungen laufen bis 2026-11-01. Hier ist der vollständige .NET MAUI Weg von net9.0-android zu API 36: der Wechsel des Target Frameworks, das fest eingetragene uses-sdk, das Sie unbemerkt auf dem alten Level hält, Edge-to-Edge ohne Abwahlmöglichkeit, Predictive Back und die Regeln für große Bildschirme.
- Was ist das W^X-Flag in .NET und braucht Native AOT es?
W^X (write xor execute) ist die Regel, dass keine Speicherseite gleichzeitig beschreibbar und ausführbar ist. In .NET ist das der Schalter DOTNET_EnableWriteXorExecute, seit .NET 7 standardmäßig aktiv, und er existiert ausschließlich für den JIT. Native AOT liest ihn nie. Hier steht, wie die Laufzeit ihn umsetzt, was er kostet und wann das Abschalten eine legitime Lösung ist.
- Eine .NET MAUI Android-App in .NET 11 von Mono zu CoreCLR migrieren
Eine schrittweise Migration von Mono zu CoreCLR für .NET MAUI unter Android: die API-24-Untergrenze, die Mono-spezifischen MSBuild-Eigenschaften, die jetzt den Build brechen, warum das APK gewachsen ist, wie sich die Startregression mit dotnet-dsrouter und dotnet-trace analysieren lässt, und wie ein Rollback tatsächlich aussieht, nachdem der Mono-Pfad verschwunden ist.
- Von VSTest zu Microsoft.Testing.Platform im .NET 11 SDK migrieren
Eine Schritt-für-Schritt-Migration von VSTest zu Microsoft.Testing.Platform 2.3.3: das Opt-in per OutputType Exe, der Runner-Wechsel in global.json, aus Loggern werden Reporter, aus .runsettings wird testconfig.json, und die Exit-Codes, die einen grünen CI-Job rot färben.
- Nach der Entfernung im modernen .NET von BinaryFormatter migrieren
Die Implementierung von BinaryFormatter wurde in .NET 9 entfernt und wirft in .NET 10 und .NET 11 weiterhin PlatformNotSupportedException: wie Sie einen Ersatzserializer auswählen, bereits gespeicherte NRBF-Blobs mit NrbfDecoder lesen und was in WinForms, WPF und ResX bricht.
- Framework-abhängig vs. eigenständig vs. Native AOT für ein .NET 11 Container-Image
Framework-abhängig auf einem chiseled aspnet-Image ist der richtige Standard für einen ASP.NET Core Dienst unter .NET 11, weil die Laufzeit-Schicht zwischen Diensten geteilt wird und eine Laufzeit-CVE durch einen Wechsel des Basis-Images behoben wird. Eigenständig mit Trimming und Native AOT erkaufen ein 2- bis 5-mal kleineres Image und einen deutlich schnelleren Kaltstart und kosten genau das. Echte veröffentlichte Größen, die Rechnung der geteilten Layer und der .NET 11 Basis-Image-Inferenzfehler, der den AOT-Pfad bricht.
- Ein Testprojekt von xUnit v2 auf xUnit v3 migrieren (2.9.3 auf 4.0.0)
Schrittweise Migration von xunit 2.9.3 auf xunit.v3 4.0.0: Pakettausch, die Umstellung von OutputType auf Exe, IAsyncLifetime mit ValueTask, der Wegfall von Xunit.Abstractions und die CI-Filtersyntax, die stillschweigend nichts mehr trifft.
- Einen Task direkt zurückgeben vs. async/await-Durchreichen in einer C#-Repository-Methode: Was sollten Sie verwenden?
Das Weglassen von async/await in einer durchreichenden Repository-Methode spart etwa 6 ns und 72 Bytes und kostet einen Stack-Frame, die try/catch-Semantik und die sichere Freigabe von Ressourcen. Behalten Sie return await, sofern die Methode nicht reines Durchreichen auf einem gemessenen heißen Pfad ist.
2026 / 08
- Fix: 23505: duplicate key value violates unique constraint bei einem nebenläufigen EF-Core-Insert
Das Prüfen-dann-Einfügen in Ihrem Handler ist nicht atomar. Fangen Sie PostgresException mit SqlState 23505 ab, oder fassen Sie alles in einer einzigen INSERT ... ON CONFLICT-Anweisung zusammen. EnableRetryOnFailure hilft nicht.
- Fix: CREATE DATABASE permission denied in database 'master' beim Ausführen von dotnet ef database update
Migrate() von EF Core prüft immer, ob die Datenbank existiert, und legt sie andernfalls über eine fest im Code verdrahtete master-Verbindung an. Vergeben Sie CREATE ANY DATABASE, reparieren Sie den Zugriff des Logins auf die vorhandene Datenbank, oder liefern Sie ein idempotentes SQL-Skript.
- Fix: Doesn't support required ABI beim Installieren einer .NET MAUI Android-App
Das APK enthält keine native Bibliothek für die CPU des Geräts. Seit .NET 9 sind die Standard-RuntimeIdentifiers für Android nur noch 64-Bit, die Lösung ist also, RuntimeIdentifiers explizit zu setzen. Behandelt ADB0020, XA0036, NETSDK1083, die Zuordnung von ABI zu RID, den Wortlaut in der Play Console und warum das überall kopierte Snippet mit vier RIDs unter .NET 11 nicht mehr funktioniert.
- Lösung: failed to resolve source metadata for mcr.microsoft.com/dotnet/aspnet
BuildKit kann das Manifest Ihres Base-Image nicht lesen. Prüfen Sie, ob das Tag existiert, reparieren Sie den Docker Credential Helper, öffnen Sie beide MCR-Endpunkte und laden Sie Images für Offline-Builds vorab.
- Aspire 13.5 bringt ein echtes Terminal ins Dashboard
WithTerminal() gibt einer Ressource eine interaktive PTY-Sitzung, in die man aus dem Dashboard tippen oder sich aus der eigenen Shell einklinken kann. Sie ist experimentell, hängt den Debugger ab, und die Shell-Option, gegen die du eventuell programmiert hast, ist weg.
- ASP.NET Core macht aus 413 kein 500 mehr in UseExceptionHandler
Ein am 2026-08-19 in dotnet/aspnetcore main integrierter PR sorgt dafür, dass ExceptionHandlerMiddleware BadHttpRequestException.StatusCode beachtet, statt ihn mit 500 zu überschreiben.
- Fix: [FromForm] Dictionary<string, string> ist in einer Minimal API immer null
Ein Dictionary mit [FromForm] bindet in einer Minimal API mit leerem Präfix: die Formularschlüssel müssen [key] heißen, nicht metadata[key]. Kapseln Sie es in einer Klasse für lesbare Namen.
- Lösung: OpenAPI 3.0 lässt sich nach dem Update auf Swashbuckle.AspNetCore v9 nicht mehr erzeugen
Swashbuckle 8 und neuer geben openapi 3.0.4 aus, nicht 3.0.1, und es gibt keine OpenApiSpecVersion für Patch-Versionen. Warum sich das geändert hat und vier Wege, die erwartete Zeichenkette zu erzwingen.
- Fix: Swagger UI zeigt Unable to render this definition nach dem Upgrade auf .NET 11
ASP.NET Core 11 gibt standardmäßig openapi 3.2.0 aus, und Swagger UI unter 10.1.5 lehnt das ab. Swashbuckle.AspNetCore.SwaggerUI aktualisieren oder OpenApiVersion auf OpenApi3_1 setzen.
- Der MSBuild-Server ist in .NET 11 Preview 7 standardmäßig aktiv
Preview 7 stellt den MSBuild-Server von opt-in auf standardmäßig aktiv um, sodass aufeinanderfolgende Aufrufe von dotnet build und dotnet test einen warmen Worker-Prozess wiederverwenden. Was sich geändert hat, wie Sie das abschalten und wie Sie nachweisen, dass der Server tatsächlich verwendet wurde.
- So erzeugen Sie einen Primärschlüssel beim Insert aus einer Datenbanksequenz in EF Core 11
Einen Schlüssel in EF Core 11 mit UseSequence von IDENTITY auf eine SQL Server-Sequenz umstellen: das exakte SQL, das EF erzeugt, warum explizite Schlüsselwerte plötzlich ohne IDENTITY_INSERT funktionieren, die bigint-Sequenz an einer int-Spalte und die Lücken, die Sie einplanen müssen.
- Wie man eine Datei aus einer Blazor-Komponente ohne JavaScript-Interop herunterlädt
Verzichten Sie komplett auf das JS-Modul downloadFileFromStream. Rendern Sie einen Anker mit dem download-Attribut, der auf einen Minimal-API-Endpunkt mit TypedResults.File zeigt, oder senden Sie ein einfaches HTML-Formular per POST mit einem AntiforgeryToken. Enthält, warum das download-Attribut verhindert, dass Blazors Enhanced Navigation den Klick schluckt, warum data-enhance die Datei stillschweigend verwirft, und die Cookie-gegen-Bearer-Falle.
- IDbContextFactory<T> aus einem Singleton-Service in Blazor verwenden
Ein Singleton kann keinen DbContext injizieren, wohl aber IDbContextFactory<T>, denn AddDbContextFactory registriert die Factory standardmäßig als Singleton. Erzeugen und entsorgen Sie einen Kontext pro Aufruf und speichern Sie die Instanz niemals.
- System.IO.Compression liest und schreibt endlich verschlüsselte ZIPs in .NET 11 Preview 7
.NET 11 Preview 7 ergänzt System.IO.Compression um passwortgeschützte ZIP-Einträge, mit AES-256-Unterstützung, Optionstypen für Operationen über ganze Verzeichnisse und einem Fehler bei leeren Dateien, der in main bereits behoben ist.
- Scalar vs Swagger UI für OpenAPI-Dokumentation in ASP.NET Core 11
Scalar liefert 1,02 MiB gzip-komprimiertes JavaScript und einen deutlich besseren Request-Builder. Swagger UI liefert 514 KiB und rendert OpenAPI 3.2, was .NET 11 inzwischen standardmäßig ausgibt. Gemessene Payloads, die 3.2-Lücke, Endpoint-Routing auf beiden Seiten und die Authentifizierungsdetails, die entscheiden.
- Zstandard vs Brotli vs Gzip bei der Antwortkomprimierung in .NET 11
Zstandard ist die richtige Voreinstellung für dynamische API-Antworten in .NET 11, aber nicht in der Qualität, mit der der ASP.NET Core Provider ausgeliefert wird. Benchmarks auf echten JSON-Payloads zeigen, warum Qualität 1 die voreingestellte Qualität 3 sowohl bei der Größe als auch bei der CPU schlägt, wann Brotli weiterhin gewinnt und warum Gzip nur noch als Kompatibilitäts-Fallback überlebt.
- Blazor-Server-Circuits pausieren sich jetzt selbst, wenn der Tab untätig ist
.NET 11 Preview 7 bringt ein optionales Paket, das interaktive Server-Circuits pausiert, sobald der Browser-Tab ausgeblendet ist. Das gibt Speicher und SignalR-Verbindungen frei, die von gar nicht anwesenden Benutzern belegt werden.
- Lösung: 404 Not Found für blazor.server.js nach Installation eines neuen .NET SDK
blazor.server.js liefert unter .NET 10 einen 404, weil das Skript keine eingebettete Ressource mehr ist. Fügen Sie RequiresAspNetWebAssets im Host-Projekt hinzu, oder sorgen Sie für eine .razor-Datei.
- C# 15 erhält beschriftetes break und continue in .NET 11 Preview 7
Beschriftetes break und continue sind im C#-Abschnitt von .NET 11 Preview 7 gelandet. Eine Schleife lässt sich jetzt mit einem Label versehen und direkt anspringen, was die Umwege über Boolesche Flags und goto bei verschachtelten Schleifen überflüssig macht.
- Fix: dotnet tool install --global dotnet-ef wirft einen Fehler
Alle Arten, auf die dotnet tool install --global dotnet-ef im .NET 10 SDK fehlschlägt, mit der exakten Meldung und dem Exit-Code zu jeder: bereits installiert, Version nicht gefunden, Downgrade blockiert, Shim-Konflikt, totes NuGet-Feed und die Laufzeit-Diskrepanz, die erst nach erfolgreicher Installation zuschlägt.
- Lösung: The 'interceptors' feature is not enabled in this namespace
CS9137 stammt vom Source Generator in Microsoft.AspNetCore.OpenApi. Fügen Sie InterceptorsNamespaces in jedem Projekt hinzu, das AddOpenApi aufruft, nicht nur im Projekt mit der PackageReference.
- Lösung: The type or namespace name 'OpenApiReference' could not be found
OpenApiReference wurde in Microsoft.OpenApi 2.0 entfernt. Das using auf Microsoft.OpenApi zu ändern reicht nicht: Ersetzen Sie jede Verwendung durch eine typisierte Referenz wie OpenApiSchemaReference.
- Eine Stored Procedure aufrufen und ihre Ergebnisse in EF Core 11 mappen
Verwenden Sie FromSql auf einem DbSet, wenn die Prozedur vollständige Entitätszeilen liefert, Database.SqlQuery<T> bei einer Projektion und ExecuteSql, wenn sie nichts liefert. Verketten Sie niemals einen LINQ-Operator auf ein EXEC, und lesen Sie einen Ausgabeparameter nie, bevor der Reader freigegeben wurde.
- So passen Sie quellcodegenerierte System.Text.Json-Serialisierung mit einem Type-Info-Resolver-Modifier an
Einen JsonTypeInfo-Modifier an einen quellcodegenerierten JsonSerializerContext in .NET 11 anhängen: warum new MyContext(options) ihn stillschweigend verwirft, das funktionierende Setup mit WithAddedModifier, der Fast Path, den Sie aufgeben (gemessen), und die Namensrichtlinien-Falle, die den Modifier wirkungslos macht.
- So überschreiben Sie den Standard-Resilience-Handler, den Aspire registriert
AddServiceDefaults von Aspire legt einen Standard-Resilience-Handler vor jeden HttpClient. Ein erneuter Aufruf von AddStandardResilienceHandler stapelt einen zweiten Handler, statt den ersten zu ersetzen. Hier sind die drei echten Wege zum Überschreiben, der undokumentierte Optionsname -standard und das unendliche Timeout, das Sie erben, wenn Sie den Handler nur entfernen.
- Wie Sie eine Tabelle in einer EF Core 11 Migration umbenennen, ohne Daten zu verlieren
EF Core erzeugt RenameTable, wenn Sie den Tabellennamen ändern, aber DropTable plus CreateTable, wenn Sie die Entitätsklasse umbenennen. Hier steht, wie Sie beide Fälle unterscheiden, der ToTable-Trick, der eine Klassenumbenennung kostenlos macht, und der Spaltenumbenennungs-Bug, der Ihre Daten stillschweigend vertauscht.
- Wie man eine dateibasierte C#-App mit `dotnet run app.cs` in .NET 11 ausführt
Ein vollständiger Leitfaden zu dateibasierten C#-Apps: eine einzelne .cs-Datei mit dotnet run ausführen, die Direktiven #:package, #:sdk, #:property, #:project und #:include, Multi-Datei-Skripte mit #:ref, Argumente und stdin, der Build-Cache, Native-AOT-Veröffentlichung, das Packen als dotnet-Tool und dotnet project convert, wenn das Skript herauswächst.
- OpenAPI-Dokumentation mit Scalar statt Swagger UI in ASP.NET Core 11 bereitstellen
Ersetzen Sie UseSwaggerUI durch MapScalarApiReference in ASP.NET Core 11: Routing, mehrere Dokumente, vorausgefüllte Authentifizierung, Absicherung in Produktion, Assets ohne CDN und die Scalar-eigenen OpenAPI-Erweiterungen.
- Lösung: Attempting to reconnect to the server nach dem Abbruch eines Blazor-Server-Circuits
Das Reconnect-Modal bedeutet, dass der SignalR-Circuit abgerissen ist, nicht dass die Anwendung abgestürzt ist. Prüfen Sie, ob der Versuch in failed oder rejected endet, und beheben Sie Session-Affinität, das 3-Minuten-Fenster, das 32-KB-Limit oder persistieren Sie den Zustand mit [PersistentState].
- gRPC vs REST vs SignalR für Service-zu-Service-Aufrufe in .NET 11
Für interne Service-zu-Service-Aufrufe in .NET 11 ist gRPC die Standardwahl, wenn Sie beide Enden des Vertrags besitzen und der Aufruf Punkt-zu-Punkt ist. Verwenden Sie REST mit JSON, sobald etwas außerhalb Ihrer Kontrolle den Dienst aufrufen muss. SignalR ist kein RPC-Transport zwischen Diensten: Greifen Sie nur dann darauf zurück, wenn ein Produzent eine Nachricht an viele langlebige Konsumenten verteilen muss.
- Fix: AggregateException "One or more errors occurred" beim Warten auf Task.WhenAll in C#
await Task.WhenAll wirft nur einen der Fehler erneut. Speichern Sie den WhenAll-Task in einer Variablen und lesen Sie Exception.InnerExceptions, um alle Fehler zu sehen.
- Lösung: HTTP Error 500.30 - ASP.NET Core app failed to start nach der Bereitstellung auf IIS
500.30 bedeutet, dass die Anwendung beim Start innerhalb von w3wp.exe eine Ausnahme geworfen hat. Die eigentliche Ausnahme steht bereits im Windows-Anwendungsprotokoll unter IIS AspNetCore Module V2. Zuerst dort lesen, dann die Ursache einordnen: fehlendes Shared Framework, x86/x64-Diskrepanz des Anwendungspools, fehlende Konfiguration oder Pool-Berechtigungen.
- Optimistische Nebenläufigkeit mit einem rowversion-Token in EF Core 11 implementieren
Ein rowversion-Concurrency-Token in EF Core 11 einrichten: die Konfiguration mit [Timestamp] und IsRowVersion, das SQL, das EF tatsächlich erzeugt, DbUpdateConcurrencyException abfangen, Datenbank gewinnt vs Client gewinnt vs Merge, getrennte APIs mit ETags und die fünf Fallen, die alles unbemerkt aushebeln.
- Wie man ein Enum in EF Core 11 mit einem Value Converter als String speichert
C#-Enums in EF Core 11 als lesbare Strings statt als Ints speichern: HasConversion, Massenkonfiguration für alle Enums, die nvarchar(max)-Falle, das Sortierproblem und die Migration einer bestehenden int-Spalte.
- Optionen beim Start mit IValidateOptions<T> in .NET 11 validieren
Implementieren Sie IValidateOptions<T>, registrieren Sie es in der Dependency Injection und hängen Sie ValidateOnStart an, damit eine fehlerhafte appsettings.json den Prozess beendet statt die erste Anfrage, die sie berührt. Behandelt die .NET-11-Überladung Validate<TValidator>(), asynchrone Validierung über IAsyncValidateOptions<T> und die drei Stellen, an denen ValidateOnStart stillschweigend nichts tut.
- Kestrel in ASP.NET Core 11 für HTTP/3 konfigurieren
Ein vollständiger Leitfaden zur Aktivierung von HTTP/3 in Kestrel unter ASP.NET Core 11: die Endpunkt-Konfiguration mit HttpProtocols.Http1AndHttp2AndHttp3, die MsQuic-Plattformanforderungen unter Windows, Linux und macOS, warum die erste Anfrage nie HTTP/3 ist, die Überprüfung mit HttpClient und Middleware, das Tuning von QuicTransportOptions sowie die Firewall- und Proxy-Fallstricke, die zu einem stillen Fallback führen.
- new Regex(...) durch den [GeneratedRegex] Source Generator in .NET 11 ersetzen
Ein vollständiger Leitfaden zur Umstellung von new Regex(pattern, RegexOptions.Compiled) auf [GeneratedRegex] in .NET 11: die mechanische Umschreibung, partielle Methoden gegenüber partiellen Eigenschaften, gemessene Startzeit- und Durchsatzwerte, die Diagnosen SYSLIB1040-1045 und die zwei Muster, bei denen der Generator stillschweigend auf eine zwischengespeicherte Regex zurückfällt.
- CPU-intensive Arbeit in einer Blazor WebAssembly App mit Web Workers in .NET 11 ausführen
Ein vollständiger Leitfaden, um CPU-intensive Arbeit in .NET 11 vom UI-Thread von Blazor WebAssembly zu nehmen: warum Task.Run nicht hilft, die neue blazorwebworker-Vorlage, die WebWorkerClient-API mit Abbruch und Timeouts, die Marshalling-Grenzen von JSExport und die Kosten der zweiten Laufzeit pro Worker.
- IOptions<T> vs IOptionsSnapshot<T> vs IOptionsMonitor<T> in .NET 11
Verwenden Sie standardmäßig IOptions<T>. Greifen Sie zu IOptionsMonitor<T>, wenn ein Singleton Konfigurationsänderungen sehen muss, und zu IOptionsSnapshot<T> nur dann, wenn ein Scoped-Consumer einen für eine Anfrage stabilen Wert benötigt. Entscheidend ist die Lebensdauer des Consumers, nicht die Form der Einstellungen.
2026 / 07
- Lösung: JavaScript interop calls cannot be issued at this time (Blazor-Prerendering)
Prerendering führt die Komponente ohne Browser auf dem Server aus, deshalb wirft IJSRuntime. Verschieben Sie den Aufruf nach OnAfterRenderAsync, prüfen Sie RendererInfo.IsInteractive oder deaktivieren Sie das Prerendering.
- Lösung: Your startup project doesn't reference Microsoft.EntityFrameworkCore.Design
Fügen Sie Microsoft.EntityFrameworkCore.Design dem Startprojekt hinzu, das dotnet ef kompiliert, nicht dem Projekt mit Ihrem DbContext, und übergeben Sie -s in geschichteten Solutions.
- Lösung: Reflection-based serialization has been disabled for this application
Diese InvalidOperationException bedeutet, dass PublishTrimmed oder PublishAot JsonSerializerIsReflectionEnabledByDefault auf false gesetzt hat. Die Lösung ist ein generierter JsonSerializerContext.
- Lösung: "The model for context 'X' has pending changes" in EF Core 11
EF Core wirft PendingModelChangesWarning, wenn das Modell nicht mehr zum letzten Migrations-Snapshot passt. Migration hinzufügen oder den Fehlalarm beheben.
- EF Core 11 Migrationen in Produktion anwenden mit dotnet ef migrations bundle
Ein vollständiger Leitfaden zur Bereitstellung von EF Core 11 Schemaänderungen mit Migration Bundles: efbundle in der CI kompilieren, die appsettings.json-Falle bei benannten Verbindungszeichenfolgen, self-contained Bundles und der musl-RID von Alpine, Migration Locking seit EF Core 9, Rollback über eine Zielmigration und warum Transaktionen pro Migration Sie unter MySQL nicht retten.
- Shell-Routenparameter und Query Properties für die Navigation in .NET MAUI 11 verwenden
Vollständiger Leitfaden zur Datenübergabe bei der Shell-Navigation in .NET MAUI 11: globale Routen registrieren, string-basierte Abfrageparameter, QueryPropertyAttribute gegenüber IQueryAttributable, die URL-Dekodierungsasymmetrie zwischen beiden, einmalig verwendbare ShellNavigationQueryParameters gegenüber der IDictionary-Überladung, die Speicher hält, Daten rückwärts mit ..?key=value übergeben, und warum QueryPropertyAttribute nicht trimmingsicher ist.
- Wie Sie ein Speicherleck im verwalteten Heap mit dotnet-gcdump und dotnet-dump diagnostizieren
Ein vollständiger Arbeitsablauf, um ein Speicherleck im verwalteten Heap unter .NET 11 zu finden: Wachstum mit dotnet-counters bestätigen, zwei gcdumps aufnehmen und vergleichen, dann einen Dump sammeln und mit dumpheap, gcroot und objsize in dotnet-dump analyze herausfinden, was die Referenz noch hält.
- Wie Sie eine .NET 11-Anwendung mit dotnet publish /t:PublishContainer als Container-Image veröffentlichen
Ein vollständiger Leitfaden zum Erstellen von Container-Images aus einer .NET 11-Anwendung ohne Dockerfile: das Target PublishContainer, ContainerRepository und ContainerImageTags, die Auswahl des Basis-Images über ContainerBaseImage und ContainerFamily, das Pushen in eine Registry und wie die Authentifizierung aufgelöst wird, Multi-Arch-OCI-Image-Indizes, der rootlose Standardbenutzer, die Steuerung des Entrypoints, Tarball-Ausgabe für Scanner und die Fälle, in denen Sie weiterhin ein Dockerfile brauchen.
- Eine polymorphe Typhierarchie mit JsonDerivedType in System.Text.Json serialisieren
Vollständiger Leitfaden zu polymorphem JSON in .NET 11: JsonDerivedType und JsonPolymorphic, warum der deklarierte Typ alles entscheidet, die Reihenfolgeregel für $type, alle Ausnahmen dieser Funktion, das Contract-Modell für fremde Typen und was ASP.NET Core in OpenAPI ausgibt.
- Wie Sie Aspire zu einer bestehenden ASP.NET Core Solution hinzufügen, ohne sie umzubauen
Aspire 13.4 in eine bestehende ASP.NET Core Solution integrieren: zwei neue Projekte und drei Zeilen pro Service. aspire init, AppHost-Verdrahtung mit AddProject und WithReference, bestehende launchSettings.json und Connection Strings bleiben erhalten, plus die Stolpersteine bei Resilienz, Health-Endpunkten und Proxy am ersten Tag.
- Zeitabhängigen Code mit TimeProvider und FakeTimeProvider in .NET 11 testen
Ersetzen Sie DateTime.UtcNow, Stopwatch und Task.Delay durch System.TimeProvider, damit Tests die Uhr steuern: Registrierung per Dependency Injection, FakeTimeProvider.Advance und SetUtcNow, Tests für Timeouts und einen PeriodicTimer-basierten BackgroundService sowie die Stolperfallen mit Advance-Fortsetzungen und xUnit v2.
- Integrationstests mit WebApplicationFactory<T> in ASP.NET Core 11 schreiben
Vollständiger Leitfaden zu WebApplicationFactory<TEntryPoint> in ASP.NET Core 11: den Program-Einstiegspunkt erreichbar machen, ConfigureTestServices gegenüber ConfigureWebHost, die EF-Core-Registrierung über IDbContextOptionsConfiguration ersetzen, der neue Hook ConfigureHostApplicationBuilder in .NET 11 Preview 6, simulierte Authentifizierung, WebApplicationFactoryClientOptions und UseKestrel, wenn ein echter Port nötig ist.
- Von blockierenden .Result/.Wait()-Aufrufen zu durchgehend asynchronem Code in einer alten C#-Codebasis migrieren
Ein stufenweiser Leitfaden, um sync-over-async aus einer bestehenden .NET-Codebasis zu entfernen: mit Analyzern inventarisieren, ThreadPool-Starvation messen, eine Aufrufkette nach der anderen umstellen und den Zähler unter .NET 11 auf null bringen.
- Von ILogger-String-Interpolation zu Message-Templates für strukturiertes Logging in .NET 11 migrieren
Eine Schritt-für-Schritt-Anleitung, um $-interpolierte ILogger-Aufrufe in Message-Templates und [LoggerMessage]-generierte Methoden unter .NET 11 zu überführen: was bricht, wie Sie eine Codebasis mit CA2254 durchkämmen, wie Sie den JSON-State prüfen und wie Sie zurückrollen.
- Endpunkt-Filter vs. Middleware in ASP.NET Core 11: Was sollten Sie verwenden?
Ein Entscheidungsleitfaden für ASP.NET Core 11: Middleware läuft bei jeder Anfrage, bevor Ihr Handler das Binding durchführt, Endpunkt-Filter laufen nur für den passenden Endpunkt, nach dem Binding, und können die typisierten Argumente sehen. Enthält eine Vergleichstabelle, Szenarien zur Auswahl, die Reihenfolge-Regeln und die Details, die die Wahl erzwingen.
- Swashbuckle IOperationFilter und ISchemaFilter zu OpenAPI-Transformern in .NET 11 migrieren
Eine Filter-für-Filter-Migrationsreferenz, um IOperationFilter- und ISchemaFilter-Code von Swashbuckle zu den integrierten Operations- und Schema-Transformern in .NET 11 zu überführen, mit dem Mapping der Kontextobjekte und den Microsoft.OpenApi-v2-Änderungen, die die Kompilierung brechen.
- .Result vs .Wait() vs GetAwaiter().GetResult() vs await in C#: welches sollten Sie verwenden?
await ist fast immer die richtige Antwort. Wenn Sie wirklich blockieren müssen, schlägt GetAwaiter().GetResult() sowohl .Result als auch .Wait(), weil es die ursprüngliche Ausnahme wirft. Eine Entscheidungsmatrix für .NET 11 und C# 14.
- SignalR-Clients können in .NET 11 Preview 6 endlich eine laufende Hub-Methode abbrechen
Das Abbrechen des CancellationToken, den Sie an InvokeAsync übergeben, erreicht jetzt den Server und bricht die Hub-Methode ab. Damit wird eine seit 2019 offene SignalR-Anfrage geschlossen.
- Typed Results (Results<>) vs IResult vs IActionResult in ASP.NET Core 11
Geben Sie in ASP.NET Core 11 Results<T1, TN> mit TypedResults für Minimal APIs und ActionResult<T> für Controllers zurück. Behandeln Sie das nackte IResult und das nackte IActionResult als Notausgänge: Sie kompilieren für jede Antwort, beschreiben OpenAPI aber nichts, sodass Sie in handgeschriebenen ProducesResponseType-Attributen dafür bezahlen.
- WebApplication.CreateBuilder vs CreateSlimBuilder vs CreateEmptyBuilder in ASP.NET Core 11
Verwenden Sie CreateBuilder für eine normale App, CreateSlimBuilder, wenn Sie getrimmt oder mit Native AOT hinter einem TLS-Proxy veröffentlichen, und CreateEmptyBuilder nur, wenn Sie jeden Dienst selbst registrieren möchten. Hier ist die Feature-Matrix samt der Stolperfallen, die die Entscheidung erzwingen.
- Complex Types vs. Owned Entities in EF Core 11: wofür sollten Sie sich entscheiden?
Nutzen Sie in EF Core 11 standardmäßig Complex Types für Value Objects und greifen Sie nur dann zu Owned Entities, wenn Sie eine separate Tabelle oder eine als eigene Zeilen abgebildete Collection benötigen.
- Output Caching vs. Response Caching in ASP.NET Core 11: Was sollten Sie verwenden?
Output Caching ist der richtige Standard fuer nahezu jede serverseitige App in ASP.NET Core 11. Response Caching gewinnt nur, wenn Ihr Ziel darin besteht, Browser- und Proxy-Caches ueber HTTP-Header zu steuern. Hier ist die Entscheidung, mit einer Feature-Matrix und den Fallstricken, die den Ausschlag geben.
- TPH vs TPT vs TPC beim Vererbungsmapping in EF Core 11: Was sollten Sie wählen?
In EF Core 11 verwenden Sie standardmäßig TPH für fast jede Hierarchie, greifen nur zu TPC, wenn Sie überwiegend einen einzelnen Blatttyp abfragen und ein Benchmark den Vorteil belegt, und nutzen TPT nur, wenn eine externe Vorgabe es erzwingt.
- Fix: CS4014 "Because this call is not awaited, execution of the current method continues" in C#
CS4014 bedeutet, dass Sie eine Task-zurückgebende Methode aufgerufen haben, ohne sie zu erwarten. Fügen Sie await hinzu, oder verwerfen Sie mit _ = bei echtem Fire-and-Forget, und behandeln Sie Ausnahmen.
- Lösung: System.InvalidOperationException: Sequence contains no elements
Diese Exception bedeutet, dass Sie .First() oder .Single() auf einer leeren Sequenz aufgerufen haben. Nutzen Sie FirstOrDefault/SingleOrDefault mit null-Prüfung, sichern Sie die Abfrage ab oder beheben Sie, warum die Quelle leer ist.
- System.Text.Json lernt in .NET 11 Preview 6, C#-Union-Typen zu serialisieren
Wie System.Text.Json in .NET 11 Preview 6 die neuen C#-Union-Typen serialisiert, indem der aktive Fall geschrieben wird, und die APIs JsonUnionAttribute und Typklassifizierer, die mehrdeutige Fälle auflösen.
- Asynchrone Validierung erreicht Minimal APIs mit .NET 11 Preview 6
Preview 6 ergänzt AsyncValidationAttribute und IAsyncValidatableObject, damit DataAnnotations-Regeln die Datenbank abfragen können, bevor Ihr Endpunkt läuft, ohne einen Thread zu blockieren.
- Lösung: CS8618 "Non-nullable property must contain a non-null value when exiting constructor" in C#
CS8618 bedeutet, dass ein nicht-nullbares Feld oder eine Eigenschaft beim Verlassen des Konstruktors nicht initialisiert war. Weisen Sie es im Konstruktor zu, geben Sie einen Standardwert, markieren Sie es als required oder machen Sie es nullbar.
- Lösung: Deadlock beim Aufruf von .Result oder .Wait() auf einer async-Methode in C#
Das Blockieren einer async-Task mit .Result oder .Wait() führt zu einem Deadlock, wenn ein SynchronizationContext vorhanden ist. Hier erkläre ich, warum es hängt und wie Sie es in .NET 11 und C# 14 lösen.
- So fügen Sie einer Minimal API in ASP.NET Core 11 einen Health-Check-Endpunkt hinzu
Ein vollständiger, funktionierender Leitfaden zu Health Checks in einer ASP.NET Core 11 Minimal API: AddHealthChecks und MapHealthChecks, eigene IHealthCheck-Klassen, die Healthy/Degraded/Unhealthy zurückgeben, die EF Core-Sonde AddDbContextCheck, tag-basierte Liveness- und Readiness-Endpunkte für Kubernetes, ein JSON-ResponseWriter, ResultStatusCodes, das Absichern des Endpunkts mit RequireAuthorization und RequireHost sowie das Pushen von Ergebnissen mit IHealthCheckPublisher.
- So fügen Sie einen Endpoint Filter zu einer Minimal API in ASP.NET Core 11 hinzu
Eine vollständige, funktionierende Anleitung zu Endpoint Filtern in einer ASP.NET Core 11 Minimal API: AddEndpointFilter mit einem Inline-Delegate, IEndpointFilter-Klassen mit Dependency Injection, GetArgument und die Arguments-Liste, Kurzschluss mit Results.Problem, FIFO/FILO-Reihenfolge über mehrere Filter, Filter auf Gruppenebene mit MapGroup und AddEndpointFilterFactory für signaturabhängige Filter.
- MAUI Mobile läuft in .NET 11 Preview 6 nur noch auf CoreCLR: Die Mono-Notausstiegsluke ist weg
.NET 11 Preview 6 entfernt den separaten Mono-Pfad für MAUI auf Android, iOS und Mac Catalyst. CoreCLR ist jetzt die einzige mobile Laufzeit, die UseMonoRuntime-Notausstiegsluke ist geschlossen, und die GA ist für November 2026 geplant.
- C# 15 Extension-Indexer vervollständigen die Extension-Member in .NET 11 Preview 6
Extension-Indexer sind in .NET 11 Preview 6 eingetroffen und erlauben es, Typen, die Sie nicht kontrollieren, um this[...]-Zugriff zu erweitern. Sie vervollständigen die Geschichte der Extension-Member, die mit Methoden und Eigenschaften in C# 14 begann.
- ASP.NET Core 11 Preview 6 aktiviert automatischen CSRF-Schutz
Preview 6 lehnt unsichere ursprungsübergreifende Browser-Anfragen standardmäßig ab und liest dazu den Sec-Fetch-Site-Header statt eines Antiforgery-Tokens. Das blockiert es, und so schließen Sie Endpunkte aus.
- Fix: "413 Request Entity Too Large" beim Hochladen einer Datei an einen ASP.NET-Core-Endpunkt
Kestrel begrenzt den Anfragekörper standardmäßig auf 30.000.000 Bytes und liefert 413, wenn Sie das überschreiten. Erhöhen Sie MaxRequestBodySize global, pro Endpunkt oder in der web.config hinter IIS.
- Behebung: System.InvalidOperationException: Headers are read-only, response has already started
Sie haben einen Header, einen Statuscode oder einen Content-Type gesetzt, nachdem der Body bereits geleert war. Setzen Sie alle Header vor der ersten Schreiboperation, oder sichern Sie mit HttpResponse.HasStarted und OnStarting ab.
- Lösung: "The property could not be mapped, because it is not a supported primitive type or a valid entity type" in EF Core 11
EF Core ist auf eine Eigenschaft gestoßen, die es nicht speichern kann. Mappen Sie sie als Complex Type, konvertieren Sie sie mit HasConversion, geben Sie ihr einen Schlüssel oder ignorieren Sie sie mit [NotMapped].
- So fügen Sie Response-Komprimierung zu einer ASP.NET Core 11 API hinzu
Ein vollständiger Leitfaden zur Response-Komprimierung in ASP.NET Core 11: AddResponseCompression und UseResponseCompression, der neue integrierte Zstandard-Provider neben Brotli und Gzip, Komprimierungsstufen, EnableForHttps und das CRIME/BREACH-Risiko, benutzerdefinierte MIME-Typen, die Middleware-Reihenfolge und wann Sie es dem Reverse-Proxy überlassen sollten.
- Wie man eine typisierte Results<T1, T2>-Union aus einem Minimal-API-Endpunkt in ASP.NET Core 11 zurückgibt
Deklarieren Sie den Rückgabetyp des Handlers als Results<Ok<T>, NotFound> und geben Sie TypedResults.Ok / TypedResults.NotFound zurück: Die Union bietet eine Prüfung zur Kompilierzeit, dass der Handler nur zurückgibt, was er deklariert, und beschreibt sich selbst gegenüber OpenAPI, sodass Sie .Produces nie von Hand schreiben. Behandelt asynchrone Handler, das Sechs-Typen-Limit und Tests in ASP.NET Core 11.
- Table-per-Hierarchy-Vererbungsmapping (TPH) in EF Core 11 konfigurieren
TPH ist die Standard-Vererbungsstrategie von EF Core: eine Tabelle, eine Diskriminatorspalte. So konfigurieren Sie den Diskriminator, teilen Spalten, behandeln nullbare abgeleitete Eigenschaften und kennen die Fallstricke in EF Core 11.
- Output Caching zu einer Minimal API in ASP.NET Core 11 hinzufügen
Ein vollständiger, funktionierender Leitfaden zum Output Caching in einer ASP.NET Core 11 Minimal API: AddOutputCache und UseOutputCache, CacheOutput an Endpunkten und MapGroup, benannte und Basis-Policies, Expire, VaryByQuery und VaryByHeader, Tag-basierte Invalidierung mit EvictByTagAsync, Schutz vor Cache-Stampede, ETag-Revalidierung und ein Redis-Backing-Store.
- OpenAPI-Dokument mit AddOperationTransformer und AddSchemaTransformer in ASP.NET Core 11 anpassen
Ein tiefer Einblick in die eingebaute OpenAPI-Transformer-Pipeline in .NET 11: Operation- vs. Schema-Transformer, die Kontextobjekte, die Ausführungsreihenfolge, DI-aktivierte Transformer sowie Rezepte für Header, Antworten, Beispiele und Anpassungen pro Eigenschaft.
- Wie man in EF Core 11 einen komplexen Typ statt einer Owned Entity abbildet
Owned Entities tragen einen versteckten Schlüssel und eine Referenzidentität, die mit Value Objects im Konflikt steht. So bilden Sie ein Value Object in EF Core 11 als komplexen Typ ab, wann Sie wechseln sollten und welche Fallstricke es gibt.
- .NET 11 Runtime Async verzichtet auf das Flag EnablePreviewFeatures
Wahrend die .NET-11-Vorschauversionen auf das November-Release zusteuern, ist Runtime Async erwachsen geworden: net11.0-Projekte aktivieren es uber eine einzige MSBuild-Eigenschaft, und die Laufzeitbibliotheken selbst werden nun damit kompiliert.
- Was ist PGO in .NET und muss ich es aktivieren?
PGO (profilgesteuerte Optimierung) lässt den .NET-JIT den heißen Code für die Typen und Verzweigungen spezialisieren, die Ihre Arbeitslast tatsächlich trifft. Dynamic PGO ist seit .NET 8 standardmäßig aktiviert, daher müssen Sie es unter .NET 8 und höher nicht aktivieren. Hier erfahren Sie, was es tut, wie Sie seine Wirkung sehen und in welchen seltenen Fällen Sie an der Einstellung drehen.
- Was ist Tiered Compilation und wie denke ich darüber nach?
Tiered Compilation ermöglicht es dem .NET-JIT, jede Methode zweimal zu kompilieren: zuerst schnell und unoptimiert, damit Ihre Anwendung startet, und dann erneut mit vollständigen Optimierungen, sobald die Laufzeit weiß, dass eine Methode heiß ist. Hier erfahren Sie, wie Tier 0, Tier 1, On-Stack-Replacement und Dynamic PGO zusammenpassen und wie Sie sie beobachten und einstellen.
- Was ist der Unterschied zwischen dotnet build und dotnet publish?
dotnet build kompiliert Ihr Projekt für die innere Entwicklungsschleife und verwendet standardmäßig Debug. dotnet publish führt das MSBuild-Target Publish aus, verwendet ab net8.0 standardmäßig Release und packt einen bereitstellbaren Ordner mit bereits erledigten Web-Assets, eigenständigen Laufzeiten, Single-File, Trimming und AOT. Hier steht genau, was jeder Befehl erzeugt und wann Sie ihn verwenden.
- Was ist der Unterschied zwischen dotnet watch und dotnet run?
dotnet run kompiliert Ihr Projekt einmal und startet es. dotnet watch umschließt dotnet run mit einem Dateibeobachter: Es startet die App neu oder wendet Hot Reload an, sobald Sie eine Quelldatei speichern. Hier steht genau, was jeder Befehl tut, was dotnet watch setzt und dotnet run nicht, und wann Sie welchen verwenden.
- Eine Minimal API von manuellen Validierungsprüfungen zur integrierten Validierung in ASP.NET Core 11 migrieren
Eine Schritt-für-Schritt-Anleitung, um handgeschriebene if-Prüfungen in den Handlern einer ASP.NET-Core-11-Minimal-API durch den integrierten, quellcodegenerierten DataAnnotations-Validator zu ersetzen: was bricht, welche manuellen Regeln portierbar sind und welche nicht, und wie Sie prüfen, dass der 400-ProblemDetails-Vertrag identisch bleibt.
- Was ist trim-sicherer Code und wie schreibe ich ihn?
Trim-sicherer Code ist Code, dessen Erreichbarkeit der .NET-Trimmer statisch beweisen kann, sodass er erhalten bleibt, wenn ungenutzter Code aus einer eigenständigen App entfernt wird. Dies ist die praktische Anleitung: Aktivieren Sie den Analyzer, treiben Sie jede IL2xxx-Warnung auf null, annotieren Sie Reflection mit DynamicallyAccessedMembers, propagieren Sie RequiresUnreferencedCode an öffentliche APIs und ersetzen Sie nicht analysierbare Muster durch Source Generatoren.
- Fix: "415 Unsupported Media Type" von einem Minimal-API-Endpunkt in ASP.NET Core 11
Eine Minimal API gibt 415 zurück, wenn der Content-Type der Anfrage nicht zu dem passt, was der Endpunkt bindet. Senden Sie Content-Type: application/json für einen aus dem Body gebundenen Typ, oder verwenden Sie [FromForm] für Formular- und Datei-Uploads.
- Lösung: CS9035 "Required member 'X' must be set in the object initializer" in C#
CS9035 bedeutet, dass ein als required markiertes Member nicht zugewiesen wurde. Weisen Sie es im Objektinitialisierer zu, oder fügen Sie einen mit [SetsRequiredMembers] annotierten Konstruktor hinzu, der jedes required-Member setzt.
- Validierungsfehler-Antworten in Minimal APIs mit IProblemDetailsService in ASP.NET Core 11 anpassen
Rufen Sie AddProblemDetails mit einem CustomizeProblemDetails-Callback auf, um die 400 umzuformen, die die integrierte Minimal-API-Validierung in ASP.NET Core 11 zurückgibt: fügen Sie eine traceId hinzu, schreiben Sie den title um, wechseln Sie von 400 zu 422 oder übernehmen Sie mit einem eigenen IProblemDetailsWriter die volle Kontrolle.
- JWT-Bearer-Authentifizierung in einer Minimal API in ASP.NET Core 11 einrichten
Eine vollständige, funktionierende Einrichtung der JWT-Bearer-Authentifizierung in einer Minimal API in ASP.NET Core 11: das Paket installieren, AddAuthentication().AddJwtBearer() verdrahten, ein Token ausstellen, Endpunkte mit RequireAuthorization schützen, Rollen- und Claim-Richtlinien hinzufügen und alles mit dotnet user-jwts testen.
- Wie man ein CancellationToken durch async-Methoden in .NET 11 propagiert
Führen Sie ein CancellationToken sauber durch jede Schicht einer async-Aufrufkette in .NET 11: Konvention des letzten Parameters, Standardwerte, verknüpfte Tokens, RequestAborted von ASP.NET Core und der CA2016-Analyzer, der die vergessenen findet.
- Asynchrone Operationen in C# mit CancellationTokenSource.CancelAfter zeitlich begrenzen
CancellationTokenSource.CancelAfter für asynchrone Deadlines in .NET 11: Konstruktor vs. CancelAfter, verknüpfte Token, Ausnahmebehandlung, Task.WaitAsync, TryReset für Pooling und testbare Timeouts mit TimeProvider.
2026 / 06
- Fix: FOREIGN KEY constraint failed beim Löschen einer Entität in EF Core 11
EF Core wirft FOREIGN KEY constraint failed, weil das übergeordnete Element noch abhängige Zeilen hat, die die Datenbank nicht verwaisen lässt. Laden Sie die Kinder, machen Sie die Beziehung optional oder konfigurieren Sie OnDelete.
- Fix: No service for type 'Microsoft.EntityFrameworkCore.DbContextOptions' has been registered
EF Core wirft dies, wenn AddDbContext nie lief, nach Build lief oder der Konstruktor des Kontexts die falschen DbContextOptions erhält. Registrieren Sie vor Build und verwenden Sie DbContextOptions<IhrKontext>.
- Fix: 405 Method Not Allowed statt 401 mit JWT Bearer in ASP.NET Core
Ein geschützter Endpunkt, der 405 statt 401 zurückgibt, bedeutet fast immer, dass das Routing das HTTP-Verb verworfen hat, bevor die Authentifizierung lief, oder dass ein Cookie-Schema die Challenge abgefangen hat. So erkennen Sie, welcher Fall vorliegt.
- Warum Ihr ASP.NET Core JWT trotz gültigem Token 401 zurückgibt
Ein gültiger Token, der dennoch 401 liefert, bedeutet fast immer, dass der Bearer-Handler nie lief oder unter dem falschen Schema lief. Prüfen Sie die Middleware-Reihenfolge, das Standardschema, den Schemanamen und ob der Header den Handler überhaupt erreicht hat.
- Fix: The seed entity for entity type 'X' cannot be added because a non-zero value is required for property 'Id'
HasData befüllt eine Entität mit vom Speicher generiertem Schlüssel, aber ohne expliziten Wert. Geben Sie jeder Zeile einen stabilen Id-Wert ungleich null, oder nutzen Sie UseSeeding.
- Wie man Erweiterungseigenschaften in C# 14 deklariert
Erweiterungseigenschaften kommen in C# 14 über den neuen extension-Block. Deklarieren Sie schreibgeschützte, schreibbare, statische und generische Erweiterungseigenschaften, warum automatische Eigenschaften abgelehnt werden und wie der Compiler sie in get_/set_-Accessoren übersetzt.
- .NET 11 Preview 5 lässt file-based Apps sich mit `#:ref` gegenseitig referenzieren
.NET 11 Preview 5 fügt die Direktive #:ref hinzu, damit ein dotnet-run-Skript eine andere file-based App als Bibliothek referenzieren kann, mit transitiven Referenzen und ohne Projektdatei.
- Keyset- (Cursor-)Pagination in EF Core 11
Ersetzen Sie Skip/Take durch eine WHERE-Klausel, die hinter die zuletzt gesehene Zeile springt. Sortieren Sie nach einem vollständig eindeutigen Schlüssel, tragen Sie die Werte der letzten Zeile als Cursor mit, und EF Core 11 macht aus der nächsten Seite einen Index-Seek statt eines OFFSET-Scans.
- JSON-Spalten in EF Core 11 mappen und abfragen
Mappen Sie einen verschachtelten Typ mit ComplexProperty(...).ToJson() auf eine einzelne JSON-Spalte, lassen Sie EF Core 11 ihn im nativen json-Datentyp von SQL Server 2025 speichern und fragen Sie ihn dann mit LINQ ab, das zu JSON_VALUE, JSON_CONTAINS und JSON_PATH_EXISTS übersetzt wird.
- Keyed Services in der Dependency Injection von .NET 11 registrieren und auflösen
Registrieren Sie mehrere Implementierungen desselben Diensttyps unter einem Schlüssel mit AddKeyedSingleton/Scoped/Transient und lösen Sie sie dann mit [FromKeyedServices], GetRequiredKeyedService oder KeyedService.AnyKey auf. Die Registrierungen mit und ohne Schlüssel sind getrennte Tabellen, und genau das ist die Stolperfalle für fast alle.
- Aussteller, Zielgruppe und Gültigkeit eines JWT in ASP.NET Core 11 validieren
Ein vollständiger Leitfaden zu TokenValidationParameters in ASP.NET Core 11: wie ValidateIssuer, ValidateAudience und ValidateLifetime funktionieren, wie die Standardwerte tatsächlich aussehen, warum Authority den Aussteller und die Signaturschlüssel automatisch konfiguriert, die Falle der 5 Minuten ClockSkew und wie Sie die IDX-Fehlercodes lesen, wenn ein scheinbar gültiges Token abgelehnt wird.
- Geschlossene Klassenhierarchien in C# 15: das Schluesselwort closed in .NET 11 Preview 5
C# 15 fuegt in .NET 11 Preview 5 den Modifizierer closed hinzu und verleiht Klassenhierarchien Vollstaendigkeit zur Kompilierzeit in switch-Ausdruecken. So funktioniert es, samt des einen Fallstricks.
- CORS für eine JWT-geschützte API in ASP.NET Core 11 konfigurieren
Ein vollständiger Leitfaden zu CORS für eine API mit Bearer-Token in ASP.NET Core 11: die korrekte Reihenfolge von UseCors gegenüber der Authentifizierung, warum ein Bearer-Token im Authorization-Header keine CORS-Anmeldeinformation ist, warum AllowAnyHeader funktioniert, ein manueller Platzhalter Authorization aber nicht abdeckt, und wie Sie verhindern, dass der Preflight fehlschlägt.
- Was ist das DynamicallyAccessedMembers-Attribut?
DynamicallyAccessedMembers teilt dem .NET-Trimmer und dem AOT-Compiler mit, welche Member eines Type Sie per Reflection erreichen, damit diese erhalten bleiben statt weggetrimmt zu werden. Es verwandelt eine stille MissingMethodException zur Laufzeit in eine IL2070-Warnung zur Build-Zeit. Hier erfahren Sie, was das Attribut tut, wie die zugrunde liegende Datenflussanalyse funktioniert und wie Sie Parameter, Felder und generische Typparameter korrekt annotieren.
- Was ist ValueTask<T> und wann lohnt es sich?
ValueTask und ValueTask<T> sind Structs, mit denen eine asynchrone Methode ein Ergebnis zurückgeben kann, ohne bei synchronem Abschluss einen Task auf dem Heap zu allozieren. Der Gewinn ist eine Allokation weniger auf Hot Paths, die üblicherweise ohne Warten abschließen. Der Preis ist ein striktes Await-once-Kontrakt. Hier steht, was der Typ tatsächlich ist, wie er funktioniert und der enge Satz an Fällen, in denen er sich auszahlt.
- Was ist ein Source Generator und wann brauche ich einen?
Ein verständlicher Leitfaden zu C# Source Generators: was sie tatsächlich tun, wie das IIncrementalGenerator-Pipeline funktioniert, wann sie Reflexion oder T4 schlagen und in welchen Fällen Sie nicht zu einem greifen sollten. Mit lauffähigen Beispielen auf .NET 11 und C# 14.
- Was ist IAsyncEnumerable<T> und wann sollten Sie es verwenden?
IAsyncEnumerable<T> ist die Schnittstelle für asynchrone Streams: eine Sequenz, deren Elemente über die Zeit eintreffen und bei der jedes Element ein await erfordern kann. Hier erfahren Sie, was es wirklich ist, wie await foreach und yield es antreiben, und die Regel, wann Sie es statt Task<List<T>> wählen sollten.
- Was ist Native AOT und was kostet es Sie?
Native AOT kompiliert Ihre .NET-App in eine einzige eigenständige native Binärdatei ohne JIT und erkauft so schnellen Start und einen kleinen Speicherbedarf. Der Preis ist eine C-Toolchain zur Compile-Zeit, langsamere Veröffentlichungen, Builds pro RID, keine Reflexion oder Reflection.Emit, obligatorisches Trimming und kein Dynamic PGO. Hier ist die vollständige Bilanz.
- Blazor static SSR erhält [SupplyParameterFromSession] in .NET 11 Preview 5
Das Lesen des Sitzungszustands im statisch serverseitig gerenderten Blazor bedeutete, auf HttpContext.Session zuzugreifen und von Hand zu serialisieren. .NET 11 Preview 5 fügt [SupplyParameterFromSession] hinzu, um eine Komponenteneigenschaft direkt an einen Sitzungsschlüssel zu binden.
- Von Swashbuckle zum integrierten OpenAPI-Generator in .NET 11 migrieren
Eine Schritt-für-Schritt-Migration von Swashbuckle.AspNetCore zu Microsoft.AspNetCore.OpenApi in .NET 11: AddSwaggerGen durch AddOpenApi ersetzen, Operations-, Schema- und Dokument-Filter in Transformer umwandeln, eine UI behalten und die Breaking Changes von Microsoft.OpenApi v2, die zubeißen.
- AsNoTracking vs AsNoTrackingWithIdentityResolution in EF Core 11: welche sollten Sie verwenden?
Verwenden Sie AsNoTracking standardmäßig für schreibgeschützte Abfragen. Greifen Sie nur dann zu AsNoTrackingWithIdentityResolution, wenn der Ergebnisgraph dieselbe Entität mehrfach enthält und Ihr Code darauf angewiesen ist, eine einzige gemeinsam genutzte Instanz zu erhalten.
- Minimal-API-Validierung vs FluentValidation in ASP.NET Core 11: Was sollten Sie wählen?
Integrierte Minimal-API-Validierung und FluentValidation vergleichen: asynchrone Regeln, Endpoint-Filter, Versionsunterschiede und Lizenz.
- Der neue EF1004-Analyzer in EF Core 11 erkennt einen stillen Async-Fehler
EF Core 11 Preview 5 liefert den EF1004-Analyzer. Er markiert ToAsyncEnumerable() auf einem IQueryable, damit Sie eine Datenbankabfrage nicht versehentlich synchron in einem await foreach durchlaufen.
- HybridCache vs IMemoryCache vs IDistributedCache in .NET 11: Was sollten Sie wählen?
Verwenden Sie für neuen Cache-Code in .NET 11 standardmäßig HybridCache. Greifen Sie nur zu IMemoryCache, wenn Sie Geschwindigkeit auf einem einzelnen Server ohne Serialisierung brauchen, und zu IDistributedCache nur als Backing Store. Hier ist die Entscheidungsmatrix.
- X25519-Schlüsselaustausch kommt integriert in .NET 11 Preview 5
.NET 11 Preview 5 fügt System.Security.Cryptography einen erstklassigen Typ X25519DiffieHellman hinzu, für Curve25519-Schlüsselaustausch ohne BouncyCastle oder NSec.
- Lösung: The entity type 'X' requires a primary key to be defined in EF Core 11
EF Core findet keinen Schlüssel für Ihren Typ. Benennen Sie eine Eigenschaft Id oder {Type}Id, ergänzen Sie [Key], rufen Sie HasKey auf oder, bei einer View oder rohem SQL, HasNoKey.
- LINQ bekommt FullJoin und selektorfreie Joins in .NET 11 Preview 5
.NET 11 Preview 5 fügt LINQ einen brandneuen FullJoin-Operator hinzu sowie Tupel-zurückgebende Overloads für Join, LeftJoin, RightJoin und GroupJoin, die den Ergebnisselektor komplett überflüssig machen.
- Statische SSR-Formulare in Blazor erhalten clientseitige Validierung in .NET 11 Preview 5
Statisch serverseitig gerenderte Blazor-Formulare konnten erst nach einem vollständigen POST-Roundtrip validieren. .NET 11 Preview 5 rendert die Validierungsmetadaten, sodass das Blazor-JS die DataAnnotations-Regeln im Browser durchsetzt, ohne Circuit.
- Lösung: The configured execution strategy 'SqlServerRetryingExecutionStrategy' does not support user-initiated transactions
EnableRetryOnFailure steht im Konflikt mit BeginTransaction. Kapseln Sie die gesamte Transaktion in db.Database.CreateExecutionStrategy().ExecuteAsync(...), damit sie als eine Einheit wiederholt wird.
- System.Text.Json schreibt in .NET 11 Preview 5 endlich JSON Lines
.NET 11 Preview 5 ergänzt JsonSerializer.SerializeAsyncEnumerable mit topLevelValues: true, sodass System.Text.Json JSONL nicht nur lesen, sondern auch streamen kann.
- Lösung: Der Render Mode wird vom Render Mode der übergeordneten Komponente nicht unterstützt (Blazor)
Sie haben @rendermode auf ein Kind gesetzt, dessen Eltern bereits interaktiv sind. Ein Teilbaum hat genau einen Render Mode. Entfernen Sie die Direktive oder verschieben Sie sie an die Grenze.
- Zustand über die statisch-zu-interaktiv-Renderinggrenze in Blazor unter .NET 11 persistieren
Eine vorgerenderte Blazor-Komponente führt ihre Initialisierung zweimal aus und verliert den Zustand beim Übergang zu interaktiv. Beheben Sie das mit dem Attribut [PersistentState] oder dem Dienst PersistentComponentState in .NET 11.
- OpenAPI ohne Swashbuckle in ASP.NET Core 11 bereitstellen
Swashbuckle ist aus den ASP.NET-Core-Templates verschwunden. So generieren und servieren Sie in .NET 11 ein OpenAPI-Dokument mit dem integrierten Paket Microsoft.AspNetCore.OpenApi: AddOpenApi, MapOpenApi, Transformer, mehrere Dokumente, Generierung zur Build-Zeit und eine Oberfläche darüber.
- Minimal-API-Endpunkte mit MapGroup organisieren
Minimal APIs mit Ressourcen-Erweiterungsmethoden und MapGroup strukturieren: verschachtelte Routen, Metadaten, Filter, Authentifizierung und Tests.
- Request-Bodies in Minimal APIs ohne Controller validieren in ASP.NET Core 11
ASP.NET Core 11 bietet eingebaute Validierung für Minimal APIs: Rufen Sie AddValidation auf, annotieren Sie Ihren Request-Record mit DataAnnotations, und ein Source Generator validiert das gebundene Modell und gibt 400 ProblemDetails zurück, bevor Ihr Handler läuft. Ohne Controller, ohne FluentValidation, ohne manuelle Prüfungen.
- .NET 11 gibt MemoryCache erstklassige OpenTelemetry-Metriken
.NET 11 Preview 4 liefert einen integrierten Meter für Microsoft.Extensions.Caching.Memory, sodass Cache-Trefferquote und Evictions ohne Background-Poller in OpenTelemetry fließen.
- Von IWebHostBuilder zu WebApplication.CreateBuilder in .NET 11 migrieren
Eine schrittweise Migration vom alten Hosting-Modell mit Startup.cs und WebHostBuilder hin zum Minimal-Hosting-Modell mit WebApplication.CreateBuilder, inklusive der ASPDEPR008-Deprecation, der Middleware-Reihenfolge, IStartupFilter und wie Sie Ihre Tests funktionsfähig halten.
- Von System.Web.HttpContext zu Microsoft.AspNetCore.Http.HttpContext migrieren
Eine praktische Migration vom System.Web.HttpContext des ASP.NET Framework zum HttpContext von ASP.NET Core 11: HttpContext.Current, die Eigenschaften-Zuordnung, Server.MapPath, Session und der Shim der System.Web-Adapter für inkrementelle Migrationen.
- Von ValueTask<T> zurück zu Task<T> migrieren: wann und warum (.NET 11, C# 14)
Eine praktische Checkliste, um die Rückgabetypen ValueTask und ValueTask<T> wieder auf Task und Task<T> umzustellen: was an den Aufrufstellen bricht, wie Sie jede Änderung prüfen und wie Sie erkennen, ob die Umstellung den Aufwand wert war.
- Eine Blazor-Server-App in .NET 11 zu Blazor United (Blazor Web App) migrieren
Eine Schritt-für-Schritt-Checkliste, um eine eigenständige Blazor-Server-App auf das vereinheitlichte Blazor-Web-App-Template in .NET 11 zu verschieben und jede Seite ohne Verhaltensänderung auf InteractiveServer zu halten.
- Migration von In-Process-Azure-Functions zum Isolated-Worker-Modell (.NET 8 / .NET 11)
Eine Schritt-für-Schritt-Checkliste, um eine .NET-In-Process-Azure-Functions-App vor dem Ende des Supports am 10. November 2026 zum Isolated-Worker-Modell zu migrieren, mit csproj-Diffs, Signatur-Umschreibungen und einem Rollout per Slot-Swap.
- Von Serilog zu OpenTelemetry-Logging in .NET 11 migrieren
Eine Schritt-für-Schritt-Anleitung, um eine .NET-11-App von Serilog auf OpenTelemetry-Logging umzustellen: die risikoarme Serilog.Sinks.OpenTelemetry-Brücke, der vollständige Umstieg auf Microsoft.Extensions.Logging, was bricht, wie Sie verifizieren und wie Sie zurückrollen.
- EF Core ExecuteUpdate versus Entitäten laden und SaveChanges: Was sollten Sie verwenden?
Ein Entscheidungsleitfaden und ein echter Benchmark für EF Core 11: Verwenden Sie ExecuteUpdate für mengenbasierte Schreibvorgänge per Prädikat und den Weg Laden-dann-SaveChanges nur, wenn Sie den Change Tracker, Interceptoren oder einen komplexen Objektgraphen benötigen.
- Von EF Core 6 auf EF Core 11 migrieren: die Breaking Changes, die wirklich wehtun
Ein versionsgenauer Migrationsleitfaden von EF Core 6.0 auf EF Core 11.0, der die Breaking Changes von EF7, 8, 9, 10 und 11 durchgeht, die echte Apps brechen: Encrypt=True, Contains mit OPENJSON, PendingModelChangesWarning, die native json-Spalte und die Aufteilung von SqlClient 7.0.
- BackgroundService vs IHostedService vs Hangfire für Hintergrundaufgaben in .NET 11
Wählen Sie BackgroundService für In-Process-Schleifen, ein reines IHostedService für feine Lebenszyklus-Kontrolle und Hangfire, wenn Aufgaben einen Neustart überleben müssen. Eine Entscheidungsmatrix mit Code und das eine Detail, das für Sie entscheidet.
- .NET 11 hebt die minimale CPU-Baseline auf x86-64-v2 an
.NET 11 Preview 4 stellt die Unterstuetzung fuer x86/x64-Chips vor 2013 ein und hebt die JIT-Baseline auf x86-64-v2 an. Das bricht, warum es passiert und wie Sie Ihre Hardware vor dem Upgrade pruefen.
- .NET 11 kann ein double bitgenau als Hex und zurück wandeln
.NET 11 Preview 4 bringt double, float und Half bei, mit dem X-Spezifizierer zu formatieren und mit NumberStyles.HexFloat zu parsen, und erzeugt denselben IEEE-754-Hex-Text wie printf("%a") in C.
- Lösung: ObjectDisposedException: Cannot access a disposed context instance
Ihre Fire-and-Forget-Task hat einen anfragebezogenen DbContext erfasst, den der DI-Scope bereits freigegeben hatte. Lösen Sie innerhalb der Task einen frischen Kontext mit IServiceScopeFactory oder IDbContextFactory auf.
- EF Core 11 Preview 4: Schluss mit dem Wiedereintippen von --project und --startup-project dank .config/dotnet-ef.json
EF Core 11 Preview 4 erlaubt es dem dotnet-ef-Tool, Standardwerte für Optionen aus einer .config/dotnet-ef.json-Datei zu lesen, sodass aufgeteilte Solutions Sie nicht mehr zwingen, --project und --startup-project bei jedem Befehl anzugeben.
- So vermeiden Sie mit Query Splitting eine kartesische Explosion in EF Core 11
Wenn Sie zwei gleichrangige Collections per Include laden, gibt EF Core 11 das Kreuzprodukt zurück und Ihre Zeilenzahl explodiert. So behebt AsSplitQuery das Problem, so aktivieren Sie es global, und das sind die Konsistenz- und Sortierfallen, die Sie beachten sollten.
2026 / 05
- Wie man Fire-and-Forget-Arbeit in ASP.NET Core mit BackgroundService sicher ausführt
Ein Aufruf von Task.Run aus einem Controller verliert Arbeit beim Herunterfahren, verschluckt Exceptions und erfasst bereits freigegebene scoped Services. Das sichere Muster ist eine begrenzte Channel-Queue, die von einem BackgroundService geleert wird, der pro Arbeitseinheit einen neuen Scope öffnet und laufende Arbeit in StopAsync abschließt.
- ExecuteUpdate und ExecuteDelete für Massenschreibvorgänge in EF Core 11 verwenden
Ein vollständiger Leitfaden zu ExecuteUpdate und ExecuteDelete in EF Core 11: das erzeugte SQL, die Falle des Change Trackers, die Ihren Massenschreibvorgang stillschweigend überschreibt, Transaktionen, Concurrency-Kontrolle über die Anzahl betroffener Zeilen und die Delegate-Setter aus EF Core 10, mit denen sich bedingte Updates über einfache if-Anweisungen erstellen lassen.
- Scoped Services in einem BackgroundService unter ASP.NET Core 11 verwenden
Ein BackgroundService ist ein Singleton und kann daher einen Scoped Service wie einen DbContext nicht direkt injizieren. Nehmen Sie IServiceScopeFactory, öffnen Sie pro Arbeitseinheit einen Scope mit CreateAsyncScope, lösen Sie darin auf und verwerfen Sie ihn nach getaner Arbeit.
- Von AutoMapper zu Source-Generator-Mapping mit Mapperly migrieren
Eine Schritt-fuer-Schritt-Checkliste, um Profiles, IMapper, ForMember und ProjectTo von AutoMapper 15 durch von Riok.Mapperly 4.3 generierte Mapper in .NET 11 zu ersetzen.
- Migration von MediatR zu einfacher Dependency Injection in .NET 11
Eine Schritt-für-Schritt-Checkliste, um MediatR 12-14 zu entfernen und IRequest-Handler, ISender, Pipeline Behaviors und INotification durch einfache Service-Klassen und Konstruktorinjektion zu ersetzen.
- Migration von Newtonsoft.Json 13 zu System.Text.Json in einer großen .NET 11 Codebasis
Ein versionsfixierter Leitfaden zum Ersetzen von Newtonsoft.Json 13.0.4 durch das in .NET 11 integrierte System.Text.Json: die Attribut- und Optionszuordnungen, die Standardwerte, die Ihr Ausgabeformat stillschweigend ändern, eine gestufte Rollout-Strategie, die Verifikation und die Fallstricke, die große Codebasen treffen.
- Von .NET 8 auf .NET 11 migrieren: die vollständige Checkliste
Migration von .NET 8 mit aktuellem .NET-11-RC3-Status, exaktem SDK-Pin, Kompatibilitätsprüfung, Deployment und Rollback planen.
- Migration von .NET Framework 4.8 zu .NET 11 im Jahr 2026
Migration von .NET Framework 4.8 mit korrektem Supportstatus, inkrementellen ASP.NET-Grenzen, Abhängigkeiten, Konfiguration und Rollback planen.
- Migration von Xamarin.Forms 5.0 zu .NET MAUI 11: die vollständige Checkliste
End-to-End-Migration von Xamarin.Forms 5.0 zu .NET MAUI 11 GA auf net11.0, einschließlich csproj-Umschreibung, Umwandlung von Custom Renderern in Handler, AppShell-Verkabelung, Entfernung von DependencyService, Rückzug von MessagingCenter, Resizetizer-Assets und den Fallstricken, die einen echten Produktionscode treffen.
- Azure Functions isolated worker vs in-process in .NET 11: was sollten Sie 2026 wählen?
Wählen Sie 2026 das Isolated-Worker-Modell für jede neue Azure-Functions-App auf .NET 11 und migrieren Sie verbleibende In-Process-Apps vor dem Stichtag am 10. November.
- Blazor-Rendermodi in .NET 11: Server, WebAssembly und Auto
Blazor Web App oder eigenständiges WebAssembly anhand von Hosting, Offline-Betrieb und Diensten wählen, mit korrigiertem Auto-Verhalten.
- EF Core 11 Preview 4: Periodenspalten temporaler Tabellen können endlich echte Eigenschaften sein
EF Core 11 Preview 4 hebt die langjährige Shadow-Property-Beschränkung für SQL-Server-temporale-Tabellen auf. PeriodStart und PeriodEnd können jetzt reguläre CLR-Eigenschaften sein, konfiguriert mit stark typisierten HasPeriodStart- und HasPeriodEnd-Lambdas.
- StringBuilder vs. String-Interpolation in .NET 11: Was sollten Sie verwenden?
Verwenden Sie String-Interpolation, um einen festen Satz von Werten in einem Schritt zusammenzusetzen; verwenden Sie StringBuilder, wenn Sie in einer Schleife oder über eine unbekannte Anzahl von Fragmenten anhängen. Die Trennlinie ist die Schleife, nicht die Anzahl der Werte.
- ASP.NET Core in .NET 11 Preview 4 bringt OpenAPI die HTTP-Methode QUERY bei
.NET 11 Preview 4 sorgt dafur, dass die OpenAPI-Generierung in ASP.NET Core HTTP QUERY als erstklassige Operation in OpenAPI 3.2 erkennt, mit einem eleganten Fallback fur 3.0- und 3.1-Dokumente.
- Polly vs. Resilience Handler in .NET 11: Was sollten Sie verwenden?
Verwenden Sie den Resilience Handler aus Microsoft.Extensions.Http.Resilience für HttpClient-Aufrufe, denn er ist Polly mit HTTP-bewussten Standardwerten und Telemetrie in einer einzigen Zeile. Greifen Sie nur dann direkt zu Pollys ResiliencePipeline, wenn Sie etwas absichern, das kein HttpClient ist.
- .NET 11 ergänzt allokationsfreie Deflate- und GZip-Komprimierung
.NET 11 Preview 4 liefert DeflateEncoder, GZipEncoder und ZLibEncoder sowie die passenden Decoder, um direkt in ein Span<byte> mit OperationStatus zu komprimieren, ganz ohne Stream.
- EF Core kompilierte Abfragen vs Raw SQL vs Dapper: Was gewinnt auf dem Lesepfad?
Fuer leselastige Pfade in .NET 11 liegt reines EF Core mit AsNoTracking innerhalb von ~5% von Dapper. Greifen Sie zu kompilierten Abfragen auf einem profilierten Einzelzeilen-Hot-Path und zu Dapper nur fuer geringste Latenz oder fuer SQL, das LINQ nicht ausdruecken kann.
- HttpClient vs HttpClientFactory vs Refit: Was sollten Sie in .NET 11 verwenden?
Erstellen Sie niemals einen HttpClient pro Anfrage. Verwenden Sie IHttpClientFactory zur Verwaltung der Lebensdauer und legen Sie Refit darauf, wenn Sie eine typisierte Schnittstelle statt handgeschriebenem Anfragecode wollen. Ein reiner Singleton-HttpClient taugt nur für die einfachsten Fälle.
- MediatR vs einfache Service-Klassen in 2026: Sollte Sie die Lizenzänderung umstimmen?
MediatR-Dispatch und Pipeline-Behaviors mit direkten Dienstaufrufen vergleichen: DI-Validierung, Lizenzkriterien und Leistungsmessung.
- C# 16 macht aus unsafe einen Vertrag für den Aufrufer
C# 16 gestaltet das Schlüsselwort unsafe neu, sodass es eine Verpflichtung an den Aufrufer weitergibt, statt stillschweigend einen unsafe-Kontext zu öffnen, und innere unsafe-Blöcke sind nun verpflichtend.
- Native AOT vs ReadyToRun vs JIT in .NET 11: Was sollten Sie ausliefern?
Der klassische JIT mit Dynamic PGO gewinnt beim Durchsatz im Dauerbetrieb, ReadyToRun beschleunigt den Start ohne Codeänderungen, und Native AOT liefert das kleinste, am schnellsten startende Binary auf Kosten von Reflexion und dynamischem Code. Wählen Sie nach der Form des Deployments, nicht nach isolierten Benchmarks.
- System.Text.Json vs Newtonsoft.Json im Jahr 2026: Welche sollten Sie wählen?
Wählen Sie System.Text.Json für neuen .NET-11-Code: Es ist integriert, rund 2x schneller und das Einzige, das mit Native AOT funktioniert. Greifen Sie nur für JSONPath, TypeNameHandling oder wirklich permissives JSON zu Newtonsoft.Json.
- ConfigureAwait(false) vs. Standard in .NET 11: spielt es noch eine Rolle?
ConfigureAwait(false) ist in Bibliothekscode, der unter einem SynchronizationContext (WinForms, WPF, MAUI) laufen kann, weiterhin Pflicht. In Anwendungscode auf ASP.NET Core, einer Konsolen-App oder einem Worker Service unter .NET 11 ist es ein No-Op.
- IEnumerable vs IAsyncEnumerable vs IQueryable in C#: Was sollte die Methode zurückgeben?
Drei Sequenz-Interfaces, drei Ausführungsmodelle. Verwenden Sie IQueryable, wenn eine Datenbank die Abfrage übersetzen kann, IAsyncEnumerable, wenn der Producer asynchron ist und Sie streamen möchten, IEnumerable für alles andere im Speicher.
- Minimal APIs vs Controllers in ASP.NET Core 11: Was sollten Sie 2026 wählen?
Wählen Sie in ASP.NET Core 11 standardmäßig Minimal APIs. Controllers nehmen Sie nur, wenn Sie MVC-Funktionen brauchen, die Minimal APIs noch nicht abdecken: konventionsbasiertes Routing über viele Actions, MVC-Filter oder Razor-Views.
- EF Core 11 vs. Dapper für Bulk-Inserts: echtes Benchmark
Für Bulk-Inserts in .NET 11 gewinnt weder EF Core noch Dapper. SqlBulkCopy gewinnt. Das ist das Benchmark, das Warum und der Platz, den jedes Werkzeug verdient.
- dotnet new mcpserver ist jetzt im SDK von .NET 11 Preview 4 enthalten
.NET 11 Preview 4 bringt das mcpserver-Projekttemplate direkt im SDK mit. Keine separate Microsoft.McpServer.ProjectTemplates-Installation, kein Preview-Feed-Tanz. Wählen Sie stdio- oder HTTP-Transport, aktivieren Sie Native AOT, und dotnet new mcpserver -o MyServer ist das gesamte Setup.
- Lösung: Das Provisioning Profile enthält das aktuell ausgewählte Gerät nicht in MAUI iOS
Das von Visual Studio gewählte Profile wurde vor der Registrierung der UDID dieses iPhones generiert. Gerät neu registrieren, Entwicklungs-Profile neu generieren, herunterladen, erneut bereitstellen.
- Fix: Unable to find a valid iOS Simulator runtime beim MAUI-Build
Xcode 15+ liefert keine iOS Simulator Runtimes mehr mit. MAUI bricht den Build ab, wenn für SupportedOSPlatformVersion keine passende Runtime installiert ist. Installieren Sie eine mit xcodebuild -downloadPlatform iOS oder über Xcode Settings, und prüfen Sie mit xcrun simctl list runtimes.
- .NET 11 bringt deadlockfreie Erfassung von Prozessausgaben
.NET 11 Preview 4 liefert neue System.Diagnostics.Process-APIs, die stdout und stderr parallel leeren, plus Einzeiler-Helfer für Start-und-Erfassen sowie KillOnParentExit.
- Fix: Der Gradle-Build hat keine .apk-Datei in MAUI Android erzeugt
Neun von zehn Mal liegt der eigentliche Gradle-Fehler weiter oben im MSBuild-Log. Falscher JDK-17-Pfad, fehlendes maui-android Workload und lange Pfade unter Windows sind die üblichen Ursachen.
- Fix: A possible object cycle was detected
System.Text.Json weigert sich, Graphen mit Rückverweisen zu serialisieren. Setzen Sie ReferenceHandler.IgnoreCycles, projizieren Sie auf ein DTO oder markieren Sie den Rückzeiger mit [JsonIgnore]. Preserve ist letzte Wahl.
- Fix: SqlException: Timeout expired bei EF Core-Migrationen
Migrationen verwenden den Design-Time-DbContext, nicht Ihr Runtime-CommandTimeout. Setzen Sie das Timeout über UseSqlServer(o => o.CommandTimeout(...)), das Command Timeout in der Verbindungszeichenfolge oder Database.SetCommandTimeout vor Migrate().
- MAUI wechselt in .NET 11 Preview 4 standardmäßig zu CoreCLR auf Android, iOS und Mac Catalyst
.NET 11 Preview 4 macht CoreCLR zur Standard-Laufzeit für MAUI auf Android, iOS, Mac Catalyst und tvOS. Mono ist nur eine MSBuild-Eigenschaft entfernt. Das ändert sich, das bricht, und so deaktivieren Sie es.
- dotnet watch erreicht in .NET 11 Preview 4 endlich MAUI auf Android und iOS
.NET 11 Preview 4 aktiviert dotnet watch für Android-Geräte, Android-Emulatoren und den iOS-Simulator. Sie bearbeiten, speichern und die laufende App aktualisiert sich ohne manuellen Rebuild. Eine csproj-Falle gilt für iOS.
- Fix: System.Text.Json.JsonException: The JSON value could not be converted
System.Text.Json wirft diese Exception, wenn das eingehende JSON-Token nicht zum CLR-Zieltyp passt. Passen Sie das JSON dem Typ an, oder registrieren Sie einen JsonConverter oder eine JsonSerializerOption, die beide verbindet.
- Fix: System.Security.Cryptography.CryptographicException: Keyset does not exist
Der private Schlüssel des Zertifikats liegt in einer separaten Windows-Schlüsseldatei, die die Prozessidentität nicht lesen kann. Setzen Sie die ACL, laden Sie das PFX mit MachineKeySet oder verwenden Sie EphemeralKeySet.
- Fehlerbehebung: The command 'dotnet' could not be found auf CI
Ihr CI-Runner kann dotnet nicht auflösen, weil das SDK für diesen Schritt nicht installiert ist oder zwar installiert, aber nicht im PATH liegt. Verwenden Sie actions/setup-dotnet, fixieren Sie ein global.json und exportieren Sie DOTNET_ROOT und ~/.dotnet/tools.
- Fix: System.IO.FileNotFoundException: Could not load file or assembly in einer veröffentlichten App
Läuft mit dotnet run, scheitert nach dotnet publish. Die DLL fehlt meist im Publish-Ordner, nicht im Runtime. Prüfen Sie deps.json, Private an ProjectReference und Trimming.
- Behebung: InvalidOperationException: Synchronous operations are disallowed
Ersetzen Sie den Aufruf von Stream.Read oder Write durch ReadAsync/WriteAsync. Als letztes Mittel setzen Sie AllowSynchronousIO bei Kestrel, IIS oder pro Anfrage über IHttpBodyControlFeature.
- Fix: RZ10012: Found markup element with unexpected name in Blazor
Der Razor-Compiler von Blazor gibt RZ10012 aus, wenn ein Tag in PascalCase keinen Komponententyp im Sichtbarkeitsbereich findet. Fügen Sie @using für den Namespace der Komponente in _Imports.razor hinzu oder @namespace in der Komponente und kompilieren Sie neu.
- Fix: dotnet ef migrations add scheitert mit 'Unable to create an object of type DbContext'
Die Design-Time-Tools von EF Core konnten Ihren DbContext nicht instanziieren. Stellen Sie einen Host über WebApplication.CreateBuilder bereit, verweisen Sie auf das richtige Startprojekt oder implementieren Sie IDesignTimeDbContextFactory.
- Fix: MSB3027 Could not copy X to Y. Exceeded retry count of 10. Failed
MSB3027 bedeutet, dass MSBuild eine Datei zehn Mal zu kopieren versuchte und ein Prozess das Ziel weiterhin gesperrt hielt. Beenden Sie den sperrenden Prozess, schließen Sie bin/obj aus dem Virenscanner aus oder erhöhen Sie CopyRetryCount.
- Fix: The type or namespace name 'X' could not be found (nach Hinzufügen einer ProjectReference)
CS0246 direkt nach einer frischen ProjectReference liegt fast immer an einem TargetFramework-Mismatch, einem veralteten obj/-Ordner oder einer fehlenden using-Direktive. Fünf Lösungen, nach Wahrscheinlichkeit geordnet.
- Fehler beheben: Cannot consume scoped service 'X' from singleton 'Y'
Die Scope-Validierung von ASP.NET Core wirft diese Ausnahme, wenn ein Singleton eine scoped Abhängigkeit über die gesamte Prozesslebensdauer einfangen würde. Machen Sie den Konsumenten scoped oder injizieren Sie IServiceScopeFactory und erstellen Sie bei Bedarf einen Scope.
- Fix: PlatformNotSupportedException: Operation is not supported on this platform unter Native AOT
Native AOT entfernt JIT und Interpreter, daher werfen Reflection Emit, Compile auf Expression-Bäumen und nicht gesehene MakeGenericType zur Laufzeit. Finden Sie den Aufruf über IL3050 und ersetzen Sie ihn durch einen Source Generator oder einen vorgefertigten Pfad.
- Lösung: Unable to resolve service for type 'X' while attempting to activate 'Y'
ASP.NET Core wirft diese Ausnahme, wenn ein Konstruktor einen Typ anfordert, der nie registriert wurde, im falschen Container registriert wurde oder erst nach dem Build des Hosts hinzugefügt wurde. Drei konkrete Lösungen decken fast jeden Fall ab.
- Fix: TaskCanceledException: A task was canceled in HttpClient
HttpClient wirft TaskCanceledException aus drei verschiedenen Gründen: Timeout, Abbruch durch den Aufrufer oder Verbindungsabbruch. Unterscheiden Sie sie über InnerException und CancellationToken.IsCancellationRequested und beheben Sie dann die richtige Ursache.
- Fix: The JSON value could not be converted to System.DateTime
System.Text.Json akzeptiert für DateTime nur ISO-8601-Strings. Senden Sie 2026-05-08T14:00:00Z oder registrieren Sie einen JsonConverter, der Ihr Format parst. Leere Strings und Unix-Timestamps lösen ebenfalls aus.
- Fix: The instance of entity type cannot be tracked because another instance with the same key value is already being tracked
EF Core 11 wirft diese Ausnahme, wenn zwei Objekte einen Primärschlüssel innerhalb eines DbContext teilen. Lösen Sie das alte Objekt oder aktualisieren Sie es an Ort und Stelle. AsNoTracking auf der Lesung verhindert die Kollision.
- Fix: A second operation was started on this context instance before a previous operation completed
EF Core wirft diese Ausnahme, wenn zwei await parallel auf demselben DbContext laufen. Warten Sie jeden Aufruf sequenziell ab, oder holen Sie sich pro nebenläufiger Arbeitseinheit einen frischen DbContext über IDbContextFactory.
- Lösung: System.InvalidOperationException: No connection string named 'DefaultConnection' could be found
Wenn GetConnectionString in .NET 11 null zurückgibt, fehlt der Schlüssel in Ihrer appsettings.json, die Datei wird nicht in die Build-Ausgabe kopiert, oder die falsche Umgebungsdatei wird gewählt. Drei Prüfungen klären 95% der Fälle.
- So paketieren Sie eine .NET MAUI App für den Microsoft Store
Vollständige Anleitung zum Paketieren einer .NET MAUI 11 Windows App als MSIX, zum Bündeln von x64/x86/ARM64 in einem .msixupload und zur Übermittlung über das Partner Center: Identitätsreservierung, Package.appxmanifest, dotnet publish Flags, MakeAppx Bundling und die Store-vertrauenswürdige Zertifikatsübergabe.
- Drag-and-Drop in .NET MAUI 11 implementieren
End-to-End-Drag-and-Drop in .NET MAUI 11: DragGestureRecognizer, DropGestureRecognizer, eigene DataPackage-Payloads, AcceptedOperation, Gestenposition und die plattformspezifischen PlatformArgs-Fallen unter Android, iOS, Mac Catalyst und Windows.
- So unterstützen Sie den Dark Mode in einer .NET MAUI-App korrekt
Dark Mode End-to-End in .NET MAUI 11: AppThemeBinding, SetAppThemeColor, RequestedTheme, UserAppTheme-Override mit Persistenz, das RequestedThemeChanged-Ereignis und die plattformspezifischen Info.plist- und MainActivity-Details, die die Dokumentation übergeht.
- Tailwind CSS mit Blazor WebAssembly in .NET 11 verwenden
Ein vollständiges .NET 11 Setup für Tailwind CSS v4 in einer Blazor WebAssembly App: standalone CLI (kein Node), MSBuild-Target, @source-Direktiven für Razor und CSS-Isolation-Dateien sowie eine Publish-Pipeline, die Native AOT übersteht.
- N+1-Abfragen in EF Core 11 erkennen
Ein praktischer Leitfaden zum Aufspüren von N+1-Abfragen in EF Core 11: wie das Muster in echtem Code aussieht, wie Sie es über Logging, Diagnose-Interceptoren, OpenTelemetry und einen Test sichtbar machen, der den Build bricht, sobald ein Hot Path regrediert.
- Kompilierte Abfragen mit EF Core für Hot Paths verwenden
Ein praktischer Leitfaden zu kompilierten Abfragen in EF Core 11: wann EF.CompileAsyncQuery wirklich gewinnt, das Static-Field-Pattern, die Stolperfallen bei Include und Tracking, und wie Sie vorher und nachher benchmarken, um den Mehraufwand zu rechtfertigen.
- Wie Sie eine MAUI-App schreiben, die nur auf Windows und macOS läuft (ohne Mobile)
Entfernen Sie Android und iOS aus einem .NET MAUI 11-Projekt, sodass nur Windows und Mac Catalyst veröffentlicht werden: die csproj-Änderungen, die Workload-Befehle und das Multi-Targeting, das Ihren Code sauber hält.
- Strukturierte Protokollierung mit Serilog und Seq in .NET 11 einrichten
Eine vollständige Anleitung, um Serilog 4.x und Seq 2025.2 in eine .NET 11 ASP.NET Core App einzubinden: AddSerilog vs. UseSerilog, zweistufige Bootstrap-Protokollierung, JSON-Konfiguration, Enricher, Request Logging, OpenTelemetry-Trace-Korrelation, API-Schlüssel und die Produktionsfallstricke rund um Buffering, Aufbewahrung und Signalebene.
- Wie Sie OpenTelemetry mit .NET 11 und einem kostenlosen Backend verwenden
Verbinden Sie OpenTelemetry-Traces, -Metriken und -Logs in einer ASP.NET Core .NET 11-Anwendung mit dem OTLP-Exporter und schicken Sie die Daten an ein kostenloses, selbst gehostetes Backend: das standalone Aspire Dashboard für die lokale Entwicklung, Jaeger und SigNoz für selbst gehostete Produktion und den OpenTelemetry Collector, wenn Sie beides brauchen.
- Integrationstests gegen einen echten SQL Server mit Testcontainers schreiben
Eine vollständige Anleitung, um ASP.NET Core-Integrationstests gegen einen echten SQL Server 2022 mit Testcontainers 4.11 und EF Core 11 auszuführen: WebApplicationFactory verdrahten, IAsyncLifetime, DbContext-Registrierung austauschen, Migrationen anwenden, Parallelität, Aufräumen mit Ryuk und CI-Stolperfallen.
- VSTest verzichtet auf Newtonsoft.Json in .NET 11 Preview 4 und was bricht, wenn Sie sich transitiv darauf verlassen haben
.NET 11 Preview 4 und Visual Studio 18.8 liefern ein VSTest aus, das Newtonsoft.Json nicht mehr in Ihre Testprojekte fließen lässt. Builds, die stillschweigend die transitive Kopie nutzten, brechen und werden mit einer einzigen PackageReference repariert.
2026 / 04
- Wie Sie Rate Limiting pro Endpunkt in ASP.NET Core 11 hinzufügen
Ein vollständiger Leitfaden zu Rate Limiting pro Endpunkt in ASP.NET Core 11: Wann Fixed Window vs. Sliding Window vs. Token Bucket vs. Concurrency wählen, wie sich RequireRateLimiting und [EnableRateLimiting] unterscheiden, Partitionierung nach Benutzer oder IP, der OnRejected-Callback und die Falle bei verteilter Bereitstellung, in die jeder tappt.
- Wie Sie die Claude API aus einer .NET 11 Minimal API mit Streaming aufrufen
Streamen Sie Claude-Antworten aus einer ASP.NET Core 11 Minimal API von Anfang bis Ende: das offizielle Anthropic .NET SDK, TypedResults.ServerSentEvents, SseItem, IAsyncEnumerable, Cancellation-Fluss und die Fallstricke, die Ihre Tokens stillschweigend puffern. Mit Beispielen für Claude Sonnet 4.6 und Opus 4.7.
- System.Threading.Lock in .NET verwenden
System.Threading.Lock für synchrone kritische Abschnitte ab .NET 9: Compilerverhalten, await-Grenzen und Unterschiede zu Monitor.
- Wie Sie einen Source Generator für INotifyPropertyChanged schreiben
Eine vollständige Anleitung zum Bau eines eigenen inkrementellen Source Generators für INotifyPropertyChanged in C# 14 und .NET 11: die IIncrementalGenerator-Pipeline, Marker-Attribute, partial class-Ausgabe, das SetProperty-Muster und wie Sie AOT-freundlich bleiben.
- So erkennen Sie, wann eine Datei in .NET fertig geschrieben ist
FileSystemWatcher feuert Changed, bevor der Schreiber fertig ist. Drei zuverlassige Muster fur .NET 11, um zu wissen, wann eine Datei vollstandig geschrieben ist: Offnen mit FileShare.None, Debounce per Grossenstabilisierung und der Rename-Trick auf der Producerseite, der das Problem komplett vermeidet.
- Validierungslogik zwischen Server und Blazor WebAssembly teilen
Die größte Quelle für Validierungs-Drift in einer Blazor-WebAssembly-plus-ASP.NET-Core-Anwendung ist der Drang, die Regeln zweimal zu schreiben. Diese Anleitung zeigt das einzige Layout, das in .NET 11 skaliert: eine Shared-Klassenbibliothek, der die DTOs und ihre Validatoren gehören, eingebunden vom WASM-Client (EditForm + DataAnnotationsValidator oder Blazored.FluentValidation) und vom Server (Endpoint-Filter in Minimal API oder MVC-Modellbindung), mit einem getesteten Round-Trip, der ValidationProblemDetails vom Server zurück in den EditContext überträgt.
- SearchValues<T> in .NET 11 richtig verwenden
SearchValues<T> schlägt IndexOfAny um Faktor 5 bis 250, aber nur wenn Sie es so verwenden, wie es die Laufzeit erwartet. Die Cache-als-static-Regel, die StringComparison-Falle, wann sich der Aufwand nicht lohnt und der IndexOfAnyExcept-Inversionstrick, den niemand dokumentiert.
- OpenAPI-Authentifizierungsflüsse in Swagger UI unter .NET 11 einrichten
Unter .NET 11 wird das OpenAPI-Dokument von Microsoft.AspNetCore.OpenApi erzeugt und Swagger UI ist nicht mehr Teil des Templates. So verkabeln Sie Bearer, OAuth2 mit PKCE und OpenID Connect, damit der Authorize-Button tatsächlich funktioniert.
- Refresh Tokens in ASP.NET Core Identity implementieren
Zwei tragfähige Wege in .NET 11: der eingebaute /refresh-Endpunkt von MapIdentityApi und ein eigener Aufbau mit JWT, Refresh-Token-Rotation, Family-Tracking und Reuse-Detection.
- Wie Sie eine große Datei per Streaming in Azure Blob Storage hochladen
Laden Sie mehrere GB große Dateien aus .NET 11 in Azure Blob Storage hoch, ohne sie in den Speicher zu laden. BlockBlobClient.UploadAsync mit StorageTransferOptions, MultipartReader für ASP.NET Core Uploads, und die Buffering-Fallen, die Ihre Nutzlast auf den LOH legen.
- Wie man die Kaltstartzeit eines .NET 11 AWS Lambda reduziert
Ein praxisorientiertes, versionsspezifisches Playbook, um Kaltstarts von .NET-11-Lambda zu kürzen. Behandelt Native AOT auf provided.al2023, ReadyToRun, SnapStart auf der gemanagten dotnet10-Runtime, Speicherabstimmung, statische Wiederverwendung, Trim-Sicherheit und wie man INIT_DURATION wirklich liest.
- Native AOT mit ASP.NET Core Minimal APIs verwenden
Eine Minimal API für Native AOT mit generierten JSON-Metadaten konfigurieren. Builder, Zielplattform, Warnungen und Funktionsgrenzen verstehen.
- So wärmen Sie das EF-Core-Modell vor der ersten Abfrage auf
EF Core baut sein konzeptionelles Modell träge beim ersten DbContext-Zugriff auf, weshalb die erste Abfrage in einem frisch gestarteten Prozess mehrere hundert Millisekunden langsamer ist als jede weitere. Dieser Leitfaden behandelt die drei realen Lösungen in EF Core 11: einen Start-IHostedService, der Model berührt und eine Verbindung öffnet, dotnet ef dbcontext optimize zum Ausliefern eines vorkompilierten Modells, und die Cache-Key-Fußangeln, die das Modell trotzdem stillschweigend neu aufbauen.
- Wie Sie einen globalen Exception-Filter in ASP.NET Core 11 hinzufügen
Ein vollständiger Leitfaden zur globalen Ausnahmebehandlung in ASP.NET Core 11: warum IExceptionFilter das falsche Werkzeug ist, wie IExceptionHandler und UseExceptionHandler zusammenarbeiten, ProblemDetails-Antworten, Multi-Handler-Ketten und die Breaking Change in .NET 10 zur Unterdrückung von Diagnostics.
- Wie Sie einen eigenen MCP-Server in C# auf .NET 11 bauen
Bauen Sie einen funktionierenden Model-Context-Protocol-Server in C# 14 / .NET 11 mit dem offiziellen ModelContextProtocol-1.2-SDK. Behandelt Stdio-Transport, [McpServerTool]-Attribute, Dependency Injection, die Stderr-Logging-Falle und die Registrierung bei Claude Code, Claude Desktop und VS Code.
- Wie Sie DbContext mocken, ohne das Change Tracking zu zerstören
Das direkte Mocken von DbContext bricht den ChangeTracker stillschweigend, weshalb Microsoft davon abrät. Diese Anleitung zeigt die zwei Muster, die in EF Core 11 wirklich funktionieren: SQLite In-Memory mit einer offen gehaltenen Verbindung, damit der echte ChangeTracker läuft, und das Repository-Muster, das EF Core ganz aus dem Test heraushebt.
- So testen Sie Code, der HttpClient verwendet, mit Unit Tests
Eine vollständige Anleitung zum Testen von HttpClient in .NET 11: warum Sie HttpClient nicht direkt mocken sollten, wie Sie einen HttpMessageHandler-Stub schreiben, den Primary Handler mit IHttpClientFactory austauschen, Polly-Retries verifizieren und die Option WireMock.Net.
- So profilen Sie eine .NET-App mit dotnet-trace und lesen die Ausgabe
Vollständiger Leitfaden zum Profilen von .NET 11-Apps mit dotnet-trace: Installation, Wahl des richtigen Profils, Aufzeichnung ab dem Start und Lesen des .nettrace in PerfView, Visual Studio, Speedscope oder Perfetto.
- Channels statt BlockingCollection in C# verwenden
System.Threading.Channels ist der async-fähige Ersatz für BlockingCollection in .NET 11. Diese Anleitung zeigt die Migration, die Wahl zwischen begrenzt und unbegrenzt sowie den Umgang mit Backpressure, Cancellation und sauberem Shutdown ohne Deadlocks.
- So schreiben Sie einen benutzerdefinierten JsonConverter in System.Text.Json
Eine vollständige Anleitung zum Schreiben eines benutzerdefinierten JsonConverter<T> für System.Text.Json in .NET 11: wann Sie ihn wirklich brauchen, wie Sie Utf8JsonReader korrekt navigieren, wie Sie generische Typen mit JsonConverterFactory behandeln und wie Sie AOT-freundlich bleiben.
- Wie man stark typisierten Client-Code aus einer OpenAPI-Spezifikation in .NET 11 generiert
Verwenden Sie Kiota, Microsofts offiziellen OpenAPI-Code-Generator, um aus jeder OpenAPI-Spezifikation einen fluenten, stark typisierten C#-Client zu erzeugen. Schritt für Schritt: installieren, generieren, in ASP.NET Core Dependency Injection einbinden und Authentifizierung konfigurieren.
- Wie man eine große CSV in .NET 11 liest, ohne den Speicher zu sprengen
Streamen Sie eine mehrere Gigabyte große CSV in .NET 11 ohne OutOfMemoryException. File.ReadLines, CsvHelper, Sylvan und Pipelines im Vergleich, mit Code und Messungen.
- Wie man eine Datei von einem ASP.NET Core Endpunkt ohne Pufferung streamt
Grosse Dateien aus ASP.NET Core 11 ohne Laden in den Arbeitsspeicher ausliefern. Drei Stufen: PhysicalFileResult fur Dateien auf der Festplatte, Results.Stream fur beliebige Streams und Response.BodyWriter fur generierten Inhalt -- mit Code fur jeden Fall.
- EF Core 11 Preview 3 bringt RemoveDbContext für saubere Provider-Swaps in Tests
EF Core 11 Preview 3 führt RemoveDbContext, RemoveExtension und eine parameterlose Überladung von AddPooledDbContextFactory ein - das Boilerplate beim Provider-Wechsel in Tests fällt weg und Pooled-Factory-Konfiguration wird zentralisiert.
- Wie man eine lang laufende Task in C# ohne Deadlock abbricht
Kooperativer Abbruch mit CancellationToken, CancelAsync, Task.WaitAsync und verknüpften Tokens in .NET 11. Plus die Blocking-Patterns, die einen sauberen Abbruch in einen Deadlock verwandeln.
- Wie man IAsyncEnumerable<T> mit EF Core 11 verwendet
EF Core 11 Queries implementieren IAsyncEnumerable<T> direkt. So streamen Sie Zeilen mit await foreach, wann Sie es gegenüber ToListAsync bevorzugen sollten, und die Fallstricke rund um Verbindungen, Tracking und Cancellation.
- Wie man Records mit EF Core 11 korrekt verwendet
Eine praktische Anleitung zur Kombination von C#-Records und EF Core 11. Wo Records passen, wo sie das Change Tracking brechen, und wie man Value Objects, Entities und Projections modelliert, ohne mit dem Framework zu kämpfen.
- Kestrel beginnt mit der Verarbeitung von HTTP/3-Requests vor dem SETTINGS-Frame in .NET 11 Preview 3
.NET 11 Preview 3 lässt Kestrel HTTP/3-Requests bedienen, bevor der Control Stream und der SETTINGS-Frame des Peers ankommen, und reduziert so die Handshake-Latenz beim ersten Request jeder neuen QUIC-Verbindung.
- EF Core 11 übersetzt Contains zu JSON_CONTAINS auf SQL Server 2025
EF Core 11 übersetzt LINQ Contains über JSON-Collections automatisch in die neue SQL Server 2025 JSON_CONTAINS-Funktion und ergänzt EF.Functions.JsonContains für pfad- und modus-spezifische Queries, die einen JSON-Index treffen können.
- Wie man mehrere Werte aus einer Methode in C# 14 zurückgibt
Sieben Wege, um mehr als einen Wert aus einer C# 14 Methode zurückzugeben: benannte Tupel, out-Parameter, Records, Structs, Deconstruction und der Extension-Member-Trick für Typen, die Ihnen nicht gehören. Echte Benchmarks und eine Entscheidungsmatrix am Ende.
- RyuJIT trimmt mehr Bounds Checks in .NET 11 Preview 3: Index-from-end und i + Konstante
.NET 11 Preview 3 bringt RyuJIT bei, redundante Bounds Checks bei aufeinanderfolgendem Index-from-end-Zugriff und bei i + Konstante < length-Mustern zu eliminieren, was Branch-Druck in engen Schleifen senkt.
- RegexOptions.AnyNewLine landet in .NET 11 Preview 3: Unicode-bewusste Anchors ohne die \r?-Hacks
.NET 11 Preview 3 fügt RegexOptions.AnyNewLine hinzu, damit ^, $, \Z und . jede Unicode-Newline-Sequenz erkennen, inklusive \r\n, NEL, LS und PS, wobei \r\n als ein atomarer Break behandelt wird.
- Aspire 13.2 --isolated: parallele AppHost-Instanzen ohne Port-Kollisionen laufen lassen
Aspire 13.2 liefert ein --isolated-Flag aus, das jedem aspire run eigene zufällige Ports und einen eigenen Secrets Store gibt. Es entsperrt Multi-Checkout-Arbeit, Agent-Worktrees und Integrationstests, die einen lebenden AppHost brauchen.
- .NET 11 Preview 3: dotnet run -e setzt Umgebungsvariablen ohne Launch Profiles
dotnet run -e in .NET 11 Preview 3 übergibt Umgebungsvariablen direkt aus der CLI und zeigt sie als MSBuild RuntimeEnvironmentVariable-Items an.
- dotnet sln bearbeitet endlich Solution Filters von der CLI aus in .NET 11 Preview 3
.NET 11 Preview 3 bringt dotnet sln bei, Projekte in .slnf Solution Filters zu erstellen, hinzuzufügen, zu entfernen und aufzulisten, sodass große Monorepos eine Teilmenge laden können, ohne Visual Studio zu öffnen.
- dotnet watch in .NET 11 Preview 3: Aspire-Hosts, Crash Recovery und sauberes Ctrl+C
dotnet watch bekommt in .NET 11 Preview 3 Aspire-App-Host-Integration, automatisches Relaunch nach Crashes und gefixtes Ctrl+C-Handling für Windows-Desktop-Apps.
- EF Core 11 beschneidet unnötige Referenz-Joins in Split Queries
EF Core 11 Preview 3 entfernt redundante To-one-Joins aus Split Queries und streicht überflüssige ORDER BY-Schlüssel. Ein gemeldetes Szenario wurde 29% schneller, ein anderes 22%. So sieht das SQL jetzt aus.
- System.Text.Json in .NET 11 Preview 3 fügt PascalCase und Per-Member-Naming-Policies hinzu
.NET 11 Preview 3 schließt die Naming-Policy-Geschichte in System.Text.Json ab: JsonNamingPolicy.PascalCase, ein Member-Level-Attribut [JsonNamingPolicy] und ein Type-Level-Default [JsonIgnore] für sauberere DTOs.
- Blazor Virtualize handhabt endlich variable Item-Höhen in .NET 11
ASP.NET Core in .NET 11 Preview 3 bringt der Virtualize-Komponente bei, Items zur Laufzeit zu messen, und behebt das Spacing- und Scroll-Jitter, das durch Annahmen uniformer Höhen entstand.
- Pin-Clustering landet in .NET MAUI 11 Maps
.NET MAUI 11 Preview 3 fügt dem Map-Control eingebautes Pin-Clustering auf Android und iOS hinzu, mit ClusteringIdentifier-Gruppen und einem ClusterClicked-Event.
- EF Core 11 fügt GetEntriesForState hinzu, um DetectChanges zu überspringen
EF Core 11 Preview 3 führt ChangeTracker.GetEntriesForState ein, einen state-gefilterten Enumerator, der einen zusätzlichen DetectChanges-Pass in Hot Paths wie SaveChanges-Interceptors und Audit-Hooks vermeidet.
- .NET MAUI 11 liefert einen eingebauten LongPressGestureRecognizer
.NET MAUI 11 Preview 3 fügt LongPressGestureRecognizer als First-Party-Geste hinzu, mit Duration, Bewegungs-Threshold, State-Events und Command-Binding - und ersetzt das übliche Community-Toolkit-Behavior.
- EF Core 11 schaltet Cosmos-DB-Transaktionsbatches standardmäßig an
EF Core 11 gruppiert Cosmos-DB-Writes bei jedem SaveChanges in transaktionale Batches pro Container und Partition und liefert damit Best-Effort-Atomarität und weniger Roundtrips ohne Codeänderungen.
- Blazor SSR erhält endlich TempData in .NET 11
ASP.NET Core in .NET 11 Preview 2 bringt TempData zum statischen serverseitigen Rendering von Blazor und ermöglicht Flash-Nachrichten und Post-Redirect-Get-Flüsse ohne Workarounds.
- C# 15 Collection Expression Arguments: Konstruktoren inline mit with(...) übergeben
C# 15 fügt das with(...)-Element zu Collection Expressions hinzu und lässt Sie Kapazität, Vergleicher und andere Konstruktorargumente direkt im Initialisierer übergeben.
- .NET 11 fügt System.IO.Compression native Zstandard-Kompression hinzu
.NET 11 Preview 1 liefert ZstandardStream, ZstandardEncoder und ZstandardDecoder in System.IO.Compression aus und bietet schnelle, eingebaute zstd-Unterstützung ohne Drittanbieterpakete.
- EF Core 11 lässt Sie eine Migration in einem Befehl erstellen und anwenden
Der Befehl dotnet ef database update akzeptiert nun --add, um eine Migration in einem einzigen Schritt zu scaffolden und anzuwenden. So funktioniert es, warum es für Container und .NET Aspire wichtig ist, und worauf zu achten ist.
- EF Core 11 fügt native SQL Server Vektorsuche mit DiskANN-Indizes hinzu
EF Core 11 Preview 2 unterstützt SQL Server 2025 VECTOR_SEARCH() und DiskANN-Vektorindizes direkt aus LINQ. So richten Sie den Index ein, führen näherungsweise Abfragen aus, und das ändert sich gegenüber dem VectorDistance-Ansatz von EF Core 10.
- ASP.NET Core 11 liefert natives OpenTelemetry-Tracing: das zusätzliche NuGet-Paket fällt weg
ASP.NET Core in .NET 11 Preview 2 fügt OpenTelemetry-Semantikattribute direkt zur HTTP-Server-Aktivität hinzu und macht OpenTelemetry.Instrumentation.AspNetCore überflüssig.
- C# 15 Union-Typen sind da: Type Unions kommen in .NET 11 Preview 2
C# 15 führt das union-Schlüsselwort für Type Unions mit erschöpfendem Pattern Matching und impliziten Konvertierungen ein. Jetzt verfügbar in .NET 11 Preview 2.
- Kestrel verzichtet in .NET 11 auf Exceptions in seinem HTTP/1.1-Parser
Kestrels HTTP/1.1-Request-Parser in .NET 11 ersetzt BadHttpRequestException durch ein Result-Struct und reduziert den Overhead malformatter Requests um bis zu 40%.
- .NET 11 Runtime Async ersetzt State Machines durch sauberere Stack Traces
Runtime Async in .NET 11 verlagert die async/await-Behandlung von compiler-generierten State Machines in die Laufzeit selbst und produziert lesbare Stack Traces, korrekte Breakpoints und weniger Heap-Allokationen.
- dotnet new webworker: erstklassige Web Workers für Blazor in .NET 11 Preview 2
Eine neue Projektvorlage in .NET 11 Preview 2 scaffoldet die JS-Klempnerei, den WebWorkerClient und das JSExport-Boilerplate, das nötig ist, um .NET-Code in einem Browser-Web-Worker auszuführen.