Start Debugging

Der .NET 11 Tracker

Ein Bookmark für den gesamten .NET 11 Zyklus.

Dieses Thema sammelt alles, was ich über .NET 11 geschrieben habe: Previews, Änderungen an der Laufzeit, GC-Updates, JIT-Arbeit und die neue BCL-Oberfläche. Legen Sie diese Seite als Lesezeichen ab; ich halte sie mit jeder Preview aktuell.

Womit anfangen

Wenn Sie neu bei .NET 11 sind, starten Sie mit den Beiträgen mit dem Tag “.net 11 preview” am oberen Ende der Liste. Jeder deckt die Highlights einer Preview ab. Die älteren Beiträge bleiben nützlich, weil der Feature-Umfang von .NET 11 kumulativ ist.

Was auf dieser Seite steht

Die Tabelle unten wird automatisch aus Beiträgen mit einem der Tags erzeugt: .net 11, dotnet 11, .net 11 preview, dotnet, .net. Ein wöchentlicher Job sortiert sie neu, sodass die aktuellste Berichterstattung nach oben rutscht.

Wenn Sie die Cheat-Sheet-Schnellreferenz statt der chronologischen Übersicht bevorzugen, schauen Sie sich die begleitenden Themen “EF Core 11 Cheat Sheet” und “C# 14 Features” an, die im /pillars/ Index verlinkt sind.

Index (391 Beiträge)

2026 / 10

  • Orleans 10.4: Stream-Abonnements können jetzt bei der ältesten gecachten Nachricht beginnen

    Orleans 10.4.0 führt StreamSubscriptionStartPosition.EarliestAvailable ein, damit ein neuer Stream-Abonnent wiedergeben kann, was noch im Queue-Cache des Pulling Agents liegt. Das Release ändert außerdem die Wire-IDs von RPC-Argumenten, die Metriken für die Anfragelatenz und die SQLite-Persistenzskripte.

  • So tragen Sie den vollständigen öffentlichen Schlüssel einer Assembly mit starkem Namen in InternalsVisibleTo eines SDK-Projekts ein

    Eine signierte Assembly muss ihre Friend-Assembly über den vollständigen öffentlichen Schlüssel mit 320 Zeichen benennen, nicht über das Token, sonst schlägt der Build mit CS1726 oder CS0281 fehl. Den Schlüssel liefern sn -p und sn -tp oder ein plattformübergreifendes .NET-Skript; danach gehört er in die Key-Metadaten eines InternalsVisibleTo-Elements in der .csproj. Behandelt werden außerdem der Fallback über die PublicKey-Eigenschaft, der DynamicProxyGenAssembly2-Schlüssel für Moq und die Falle mit Zeilenumbrüchen.

  • Windows-Sitzungsereignisse für Sperren, Entsperren, Anmelden und Abmelden in einer C#-App erkennen

    Verwenden Sie SystemEvents.SessionSwitch in einer Desktop- oder Konsolen-App, überschreiben Sie OnSessionChange in einem Windows-Dienst oder hängen Sie sich selbst in WM_WTSSESSION_CHANGE ein. Mit .NET 10-Code für alle drei Varianten, dem versteckten Thread '.NET System Events', dem Grund, warum Dienste die Anmeldung sehen, Desktop-Apps aber nicht, Benachrichtigungen in falscher Reihenfolge und der Abfrage des aktuellen Sperrzustands mit WTSQuerySessionInformation.

  • NUnit 5: Assert.ThrowsAsync gibt jetzt einen Task zurück, und ein nicht erwarteter Aufruf besteht stillschweigend

    NUnit 5.0.0 macht Assert.ThrowsAsync, CatchAsync und DoesNotThrowAsync wirklich asynchron. Wer das await vergisst, führt die Prüfung nie aus. Hier steht, was kaputtgeht, was die Regel NUnit2059 aus NUnit.Analyzers abfängt und welche weiteren NUnit-5-Änderungen Sie vor dem Upgrade prüfen sollten.

  • So warten Sie synchron auf einen ValueTask in einer nicht-asynchronen Methode, ohne zu allokieren

    Prüfen Sie zuerst IsCompleted und lesen Sie das Ergebnis über GetAwaiter().GetResult(), das 0 Bytes kostet. Blockieren Sie nur, wenn der ValueTask noch aussteht, und nutzen Sie dafür ein gecachtes Event und UnsafeOnCompleted statt AsTask(), das pro Aufruf 72 bis 208 Bytes allokiert. Gemessen unter .NET 10 und .NET 11 RC1.

  • Agent Framework 1.23: Function-Middleware kann das aufgerufene Tool endlich austauschen

    Microsoft Agent Framework .NET 1.23.0 berücksichtigt Zuweisungen an FunctionInvocationContext.Function, sodass Middleware einen Tool-Aufruf auf eine andere AIFunction umleiten kann. Der neue Helper WrapWithPendingMiddleware hält den Rest der Kette eingebunden.

  • EF.Parameter vs. EF.Constant in EF Core 11 Abfragen

    EF.Constant schreibt einen erfassten Wert als SQL-Literal in die Abfrage, EF.Parameter macht aus einem Literal einen SQL-Parameter. Belassen Sie die Standardeinstellungen von EF Core, nutzen Sie EF.Parameter, damit dynamisch gebaute Expression Trees nicht bei jedem Aufruf neu kompiliert werden, und EF.Constant nur für Werte mit wenigen Ausprägungen, deren Daten so schief verteilt sind, dass jeder Wert einen eigenen Plan braucht.

  • Volatile.Read vs Volatile.ReadBarrier in .NET 10

    Volatile.Read ist ein Acquire-Load einer einzelnen Speicherstelle. Volatile.ReadBarrier, neu in .NET 10, ist ein Fence, der allen früheren Lesezugriffen Acquire-Semantik gibt. Verwenden Sie Volatile.Read für Flags und veröffentlichte Referenzen und ReadBarrier, wenn mehrere einfache oder nicht atomare Lesezugriffe abgeschlossen sein müssen, bevor der nächste Speicherzugriff erfolgt, etwa bei einem Seqlock.

  • Fix: dotnet test endet mit Exit-Code 5 und "Zero tests ran" auf Microsoft.Testing.Platform

    Exit-Code 5 bedeutet, dass MTP eine Befehlszeilenoption abgelehnt hat, nicht dass Tests fehlen. Führen Sie die Test-Exe direkt aus, um den echten Fehler zu sehen, und fügen Sie dann das Erweiterungspaket hinzu oder leiten Sie die Option projektweise weiter.

  • .NET MAUI 10.0.110 behebt sechs Speicherlecks, die ein agentischer Leak Hunter gefunden hat

    MAUI 10.0.110 liefert sechs Leak-Fixes für BackButtonBehavior, SwipeItemView, ListView.RefreshCommand, IndicatorView, GeometryGroup und TableView. Die meisten wurden von gh-aw-Workflows gemeldet und gepatcht, und sie betreffen vor allem Apps, die RelayCommand aus CommunityToolkit.Mvvm verwenden.

2026 / 09

2026 / 08

2026 / 07

2026 / 06

2026 / 05

2026 / 04

2026 / 03

2026 / 02

2026 / 01

2025 / 04

2025 / 01

  • .NET-Performance: ToList vs. ToArray

    .NET 9 verbessert die ToArray-Performance deutlich durch InlineArray und macht es schneller und speicherschonender als ToList. Sehen Sie sich Benchmarks an, die .NET 8 mit .NET 9 vergleichen.

  • C# 13: params-Collections mit jedem erkannten Sammlungstyp verwenden

    C# 13 erweitert den params-Modifier über Arrays hinaus, um Span, ReadOnlySpan, IEnumerable und andere Sammlungstypen zu unterstützen, was Boilerplate reduziert und die Flexibilität erhöht.

  • Wie man auf C# 13 umstellt

    Wie Sie 'Feature is not available in C# 12.0' beheben und Ihr Projekt auf C# 13 umstellen, indem Sie das Target Framework ändern oder LangVersion in Ihrer .csproj-Datei setzen.

2024 / 12

  • Was ist neu in C# 14.0

    Eine Übersicht aller neuen Funktionen in C# 14.0, einschließlich des field-Schlüsselworts, Erweiterungsmember, null-bedingter Zuweisung, impliziter Span-Konvertierungen und mehr.

  • Was ist neu in .NET 10

    Was ist neu in .NET 10: LTS-Release mit 3 Jahren Support, neue JIT-Optimierungen, Array-Devirtualisierung, Verbesserungen bei der Stack-Allokation und mehr.

  • Versionsgeschichte der Sprache C#

    Die Entwicklung von C# hat es in eine moderne, leistungsstarke Sprache verwandelt. Dieser Leitfaden zeichnet jeden wichtigen Meilenstein nach. Die Anfangsjahre (C# 1.0 - 1.2). C# wurde 2002 als Hauptsprache für das .NET Framework eingeführt. Es fühlte sich wie Java an, jedoch mit Fokus auf Windows-Entwicklung. Version 1.2 kam kurz darauf mit kleinen...

2024 / 04

2023 / 11

2023 / 10

2023 / 09

2023 / 08

  • Wie Sie dotnet script installieren

    dotnet script ermöglicht es, C#-Skripte (.CSX) aus der .NET-CLI auszuführen. Einzige Voraussetzung: .NET 6 oder neuer auf dem Rechner. Mit folgendem Befehl installieren Sie dotnet-script global: Anschließend führen Sie eine Skriptdatei einfach mit dotnet script <file_path> aus, wie im Beispiel unten: Wie...

  • C# Wie warten Sie, bis ein Prozess endet?

    Mit der Methode WaitForExit können Sie auf das Ende eines Prozesses warten. Ihr Code wartet synchron, bis der Prozess fertig ist, und führt dann die Ausführung fort. Sehen wir uns ein Beispiel an: Der Code oben startet einen neuen cmd.exe-Prozess und führt den Befehl timeout 5 aus. Der Aufruf process.WaitForExit() zwingt Ihr Programm...

  • .NET 8 JsonNamingPolicy: SnakeCaseLower und KebabCaseLower (System.Text.Json)

    Verwenden Sie die neuen `JsonNamingPolicy.SnakeCaseLower` (und SnakeCaseUpper, KebabCaseLower, KebabCaseUpper) in .NET 8, um JSON in snake_case / kebab-case via System.Text.Json zu serialisieren — ohne eigenen Converter.

2023 / 06

  • dotnet new api -aot: '-aot' is not a valid option

    Beheben Sie den Fehler '-aot is not a valid option', indem Sie die korrekte Syntax mit doppeltem Bindestrich verwenden: dotnet new api --aot.

  • Wie Sie mit der Programmierung in C# beginnen

    Ein Einsteigerleitfaden für den Einstieg in die Programmierung mit C#, von der Einrichtung von Visual Studio über das Schreiben Ihres ersten Programms bis hin zu Lernressourcen.

  • Was ist neu in .NET 8

    .NET 8 wurde am 14. November 2023 als LTS-Version (Long Term Support) veröffentlicht und erhält damit für mindestens drei Jahre nach Release weiterhin Support, Updates und Fehlerbehebungen. Wie üblich bringt .NET 8 Unterstützung für eine neue Version der C#-Sprache mit, nämlich C# 12.

Alle Themen Startseite