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 (164 Beiträge)
2026 / 05
- .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().
- 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.
- Copilot Studio mit .NET 10 WebAssembly: 20% Cold Path, 5% Warm Path
Microsoft hat die WASM-Engine von Copilot Studio von .NET 8 auf .NET 10 umgestellt. Das duale JIT/AOT-Paket, Fingerprinting und WasmStripILAfterAOT erklären die Zahlen.
- 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.
- Workflows in Microsoft Agent Framework überleben Prozessneustarts jetzt via Durable Task
Verpacken Sie einen Agent-Framework-Workflow in Microsoft.Agents.AI.DurableTask, und jeder Executor-Schritt bekommt einen Checkpoint. Crash, Redeploy, Neustart: Der Lauf macht dort weiter, wo er gestoppt wurde.
- 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.
- Performante Xamarin.Forms ListView zu MAUI CollectionView migrieren
Schritt-für-Schritt-Migration von Xamarin.Forms 5.0 ListView zu .NET MAUI 11 CollectionView für Apps, die bereits jede Performance aus ListView herausgeholt haben. Behandelt Cell Recycling, Virtualisierung, Gruppierung, Pull-to-Refresh, Kontextaktionen, Auswahl, ItemsLayout, EmptyView und die Stolperfallen, die echte Apps treffen.
- Microsoft Agent Framework sichert riskante Tool-Aufrufe mit FunctionApprovalRequestContent ab
Verpacken Sie ein AIFunction in ApprovalRequiredAIFunction, und der Agent hält mitten im Lauf an, um Erlaubnis zu erbitten. So funktioniert der Anfrage- und Antwort-Fluss in C#.
- 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.
- T[] in ReadOnlyMemory<T> in C# umwandeln (impliziter Operator und expliziter Konstruktor)
Drei Wege, ein T[] in .NET 11 in ein ReadOnlyMemory<T> einzuhüllen: die implizite Konvertierung, der explizite Konstruktor und AsMemory(). Wann welcher der richtige ist.
- Agent Governance Toolkit setzt eine YAML-Policy vor jeden MCP-Tool-Aufruf aus .NET
Microsofts neues Microsoft.AgentGovernance-Paket umschließt MCP-Tool-Aufrufe mit einem Policy-Kernel, einem Security Scanner und einem Response Sanitizer. Hier ist, was jede Komponente macht und wie die Verdrahtung in C# aussieht.
- 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.
2026 / 04
- Claude Code 2.1.122 erlaubt die Auswahl der Bedrock-Service-Stufe per Umgebungsvariable
Claude Code v2.1.122 fügt die Umgebungsvariable ANTHROPIC_BEDROCK_SERVICE_TIER hinzu, die als Header X-Amzn-Bedrock-Service-Tier gesendet wird. Setzen Sie sie auf flex für 50 Prozent Rabatt auf Agent-Aufrufe oder priority für schnellere Antworten, ohne SDK-Code anzufassen.
- 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.
- So nutzen Sie den neuen System.Threading.Lock-Typ in .NET 11
System.Threading.Lock kam mit .NET 9 und ist die Standard-Synchronisationsprimitive in .NET 11 und C# 14. Diese Anleitung zeigt die Migration von lock(object), wie EnterScope funktioniert und die Stolperfallen rund um await, dynamic und Downlevel-Targets.
- 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.
- 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.
- SkiaSharp 4.0 Preview 1: Unveränderlicher SKPath, variable Schriften und ein neuer Co-Maintainer
SkiaSharp 4.0 Preview 1 erscheint mit Uno Platform als Co-Maintainer neben dem .NET-Team. SKPath wird hinter einem neuen SKPathBuilder unveränderlich, und HarfBuzzSharp erhält volle Achsensteuerung für variable OpenType-Schriften.
- 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.
- Native AOT mit ASP.NET Core Minimal APIs verwenden
Eine vollständige .NET-11-Anleitung zum Ausliefern einer ASP.NET Core Minimal API mit Native AOT: PublishAot, CreateSlimBuilder, quellgenerierte JSON-Serialisierung, die AddControllers-Einschränkung, IL2026-/IL3050-Warnungen und EnableRequestDelegateGenerator für Bibliotheksprojekte.
- 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.
- 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.
- Aspire 13.2.4 schließt CVE-2026-40894: DoS über baggage-Header in OpenTelemetry .NET
Aspire 13.2.4 enthält ein OpenTelemetry-Update für CVE-2026-40894, eine Allokationsverstärkung in Gen0 beim Parsen der Propagatoren baggage, B3 und Jaeger. Aktualisieren Sie OpenTelemetry.Api und OpenTelemetry.Extensions.Propagators auf 1.15.3, auch wenn Sie kein Aspire verwenden.
- 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.
- .NET 10 auf Ubuntu 26.04: resolute Container-Tags und Native AOT im Archive
Ubuntu 26.04 Resolute Raccoon liefert .NET 10 im Archive aus, führt -resolute Container-Tags ein, die -noble ersetzen, und paketiert Native AOT-Tooling via dotnet-sdk-aot-10.0.
- 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 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.
- 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.
- .NET 10.0.7 liefert out-of-band, um CVE-2026-40372 in ASP.NET Core Data Protection zu fixen
Ein HMAC-Validierungsfehler in Microsoft.AspNetCore.DataProtection 10.0.0 bis 10.0.6 lässt Angreifer Ciphertexts fälschen. .NET 10.0.7 ist der obligatorische Fix.
- Der Debugger Agent in Visual Studio 18.5 macht Copilot zum lebendigen Bug-Jagd-Partner
Visual Studio 18.5 GA liefert einen geführten Debugger-Agent-Workflow in Copilot Chat, der eine Hypothese bildet, Breakpoints setzt, durch ein Repro mitfährt, gegen Runtime-State validiert und einen Fix vorschlägt.
- Agent Skills landen in Visual Studio 2026 18.5: Copilot entdeckt SKILL.md automatisch aus Ihrem Repo
Visual Studio 2026 18.5.0 lässt GitHub Copilot Agent Skills aus .github/skills, .claude/skills und ~/.copilot/skills laden. Wiederverwendbare SKILL.md-Instruction-Packs reisen mit Ihrem Repo.
- 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 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.
- Eine Datenbank-Engine mit Mikrosekunden-Latenz in C# bauen
Loic Baumanns Typhon-Projekt zielt auf ACID-Commits in 1-2 Mikrosekunden mittels ref structs, Hardware-Intrinsics und gepinntem Speicher und zeigt, dass C# auf Systemprogrammier-Niveau mithalten kann.
- Wie Dappers standardmäßige nvarchar-Parameter Ihre SQL-Server-Indizes still killen
C#-Strings, die durch Dapper gesendet werden, fallen standardmäßig auf nvarchar(4000), was SQL Server zu impliziten Konvertierungen und vollen Index-Scans zwingt. Hier, wie man es mit DbType.AnsiString behebt.
- GitHub Copilot Modernization: Der Assessment-Report ist das eigentliche Produkt
GitHub Copilot Modernization wird als Assess, Plan, Execute-Loop für die Migration von Legacy-.NET-Apps verkauft. Die Assessment-Phase ist, wo der Wert liegt: ein Inventar-Report, kategorisierte Blocker und dateiebenen-genaue Remediation-Guidance, die Sie wie Code diffen können.
- Hot Reload Auto-Restart in Visual Studio 2026: Rude Edits hören auf, Ihre Debug-Session zu töten
Visual Studio 2026 fügt HotReloadAutoRestart hinzu, ein projektbezogenes Opt-in, das die App neu startet, wenn ein Rude Edit sonst die Debug-Session beenden würde. Besonders nützlich für Razor- und Aspire-Projekte.
- 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.
- Rider 2026.1 liefert einen ASM-Viewer für JIT-, ReadyToRun- und NativeAOT-Ausgabe
Rider 2026.1 fügt ein .NET Disassembler Plugin hinzu, mit dem Sie den vom JIT-, ReadyToRun- und NativeAOT-Compiler erzeugten Maschinencode inspizieren können, ohne die IDE zu verlassen.
- 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%.
- Microsoft Agent Framework 1.0: KI-Agenten in reinem C# bauen
Microsoft Agent Framework erreicht 1.0 mit stabilen APIs, Multi-Provider-Konnektoren, Multi-Agent-Orchestrierung und A2A/MCP-Interop. So sieht es in der Praxis auf .NET 10 aus.
2026 / 03
- Wie 878 Copilot-Coding-Agent-PRs in dotnet/runtime tatsächlich aussehen
Das .NET-Team teilt zehn Monate echter Daten zum Betrieb von GitHubs Copilot Coding Agent in dotnet/runtime: 878 PRs, eine Merge-Rate von 67,9 % und klare Lehren, wo KI-gestützte Entwicklung hilft und wo sie immer noch zu kurz greift.
- Generative AI for Beginners .NET v2: für .NET 10 mit Microsoft.Extensions.AI neu gebaut
Microsofts kostenloser Generative-AI-Kurs für .NET-Entwickler liefert Version 2, neu gebaut für .NET 10 und von Semantic Kernel auf das IChatClient-Muster von Microsoft.Extensions.AI migriert.
2026 / 02
- C# 14 Idee: Interceptors könnten die Source-Generation von System.Text.Json automatisch wirken lassen
Eine Community-Diskussion schlug vor, C# 14 Interceptors zu nutzen, um JsonSerializer-Aufrufe so umzuschreiben, dass sie automatisch einen generierten JsonSerializerContext verwenden und so die AOT-freundliche Source-Generation mit saubereren Aufrufstellen erhalten.
- Polars.NET: eine Rust-DataFrame-Engine für .NET 10, die auf LibraryImport setzt
Ein neues Polars.NET-Projekt liegt nach einem Community-Post vom 6. Februar 2026 im Trend. Die Schlagzeile ist einfach: eine .NET-freundliche DataFrame-API, gestützt von Rust Polars, mit einem stabilen C ABI und LibraryImport-basierter Interop, um den Overhead niedrig zu halten.
- TrailBase v0.23.7: Eine Firebase-Alternative aus einer einzigen Binärdatei für .NET 10 und Flutter
TrailBase ist ein quelloffenes Backend mit einer einzigen ausführbaren Datei, gebaut auf Rust, SQLite und Wasmtime. Version 0.23.7 bringt UI-Korrekturen und besseres Error-Handling.
- .NET Framework 3.5 wird auf neuen Windows-Builds eigenständig: was bricht
Ab Windows 11 Build 27965 ist .NET Framework 3.5 keine optionale Windows-Komponente mehr. Hier erfahren Sie, was in CI, Provisioning und Golden Images bricht und wie Sie es beheben.
2026 / 01
- NuGet-„Become-Owner“-Anfragenspam: Was tun (und was abriegeln) in .NET 9/.NET 10
Verteidigen Sie Ihre .NET-Pakete gegen Spam an Eigentümeranfragen auf NuGet. Lock-Dateien, Package Source Mapping und Central Package Management Praktiken für .NET 9 und .NET 10.
- Scalar in ASP.NET Core: warum Ihr Bearer-Token ignoriert wird (.NET 10)
Wenn Ihr Bearer-Token in Postman funktioniert, in Scalar aber nicht, liegt das Problem wahrscheinlich an Ihrem OpenAPI-Dokument. So deklarieren Sie ein passendes Security-Schema in .NET 10.
- TreatWarningsAsErrors, ohne die Dev-Builds zu sabotieren (.NET 10)
Wie Sie TreatWarningsAsErrors in Release-Builds und CI durchsetzen, während Debug für lokale Entwicklung in .NET 10 flexibel bleibt - mit Directory.Build.props.
- Perfetto + dotnet-trace: ein praktischer Profiling-Loop für .NET 9/.NET 10
Ein praktischer Profiling-Loop für .NET 9 und .NET 10: Erfassen Sie Traces mit dotnet-trace, visualisieren Sie sie in Perfetto und iterieren Sie über CPU-, GC- und Thread-Pool-Probleme.
- Eine WinUI 3-App mit "Nur lokal"-Notizen ist die richtige Art langweilig: offline-first, SQLite, tastaturzentriert
Miyanyedi Quick Note ist eine WinUI 3 + SQLite-Notiz-App, die offline-first und datenschutzfreundlich ist. Warum "nur lokal" ein Feature ist, plus ein minimales SQLite-Snippet für .NET 8-Desktop-Apps.
- Ein open-source WPF-SSH-Manager zeigt ein praktisches Muster: xterm.js in WebView2, Secrets via DPAPI
SshManager ist ein open-source WPF-SSH-Manager auf Basis von .NET 8. Er zeigt ein praktisches Muster: xterm.js innerhalb von WebView2 für das Terminal-Rendering, EF Core + SQLite für die Persistenz und DPAPI für den Schutz lokaler Anmeldeinformationen.
- CV Shortlist: ein KI-gestütztes .NET 10-SaaS ging open-source, und der Stack lohnt das Studium
CV Shortlist ist ein open-source .NET 10-SaaS, das Azure Document Intelligence mit einem OpenAI-Modell kombiniert. Stack, Konfigurationsdisziplin und KI-Integrationsgrenze lohnen das Studium.
- ModularPipelines V3: CI-Pipelines in C# schreiben, lokal debuggen, kein YAML-Babysitting mehr
ModularPipelines V3 erlaubt Ihnen, CI-Pipelines in C# statt in YAML zu schreiben. Führen Sie sie lokal mit dotnet run aus, profitieren Sie von Sicherheit zur Kompilierzeit und debuggen Sie mit Haltepunkten.
- Eine .NET-App mit Podman + systemd ausliefern: stabile Restarts, echte Logs, keine Magie
.NET 9- und .NET 10-Dienste auf einer Linux-VM mit Podman und systemd ausliefern. Stabile Restarts, echte Logs über journald und eine containerisierte App, die wie ein richtiger Dienst verwaltet wird -- ganz ohne Kubernetes.
- gRPC in Containern wirkt unter .NET 9 und .NET 10 schwer: 4 Fallen, die Sie beheben können
Vier verbreitete Fallen beim Hosten von gRPC in Containern mit .NET 9 und .NET 10: HTTP/2-Protokollkonflikte, unklare TLS-Terminierung, kaputte Health Checks und falsch konfigurierte Proxies -- mit Lösungen für jede.
- Microsoft `mcp`: Model Context Protocol-Server aus C# auf .NET 10 verdrahten
So verdrahten Sie Model Context Protocol (MCP)-Server in C# auf .NET 10 mit microsoft/mcp. Behandelt Tool-Verträge, Eingabevalidierung, Auth, Observability und produktionstaugliche Muster.
- Hintergrundjobs in .NET 9 und .NET 10 ohne Hangfire überwachen: Health + Metriken + Alerts
Überwachen Sie BackgroundService-Jobs in .NET 9 und .NET 10 ohne Hangfire mit Heartbeat-Health-Checks, Dauer-Metriken und Fehler-Alerts -- mit einem praktischen Codebeispiel.
- Datei-basierte Apps in .NET 10 bekommen Multi-File-Skripte: `#:include` kommt
.NET 10 ergänzt #:include für datei-basierte Apps, sodass dotnet run-Skripte mehrere .cs-Dateien umfassen können, ohne ein komplettes Projekt anzulegen.
- SBOM für .NET in Docker: hören Sie auf, ein einziges Werkzeug alles sehen zu lassen
Wie Sie NuGet-Abhängigkeiten und OS-Pakete des Containers für ein .NET-Docker-Image mit CycloneDX, Syft und Dependency-Track verfolgen -- und warum ein einzelnes SBOM nicht ausreicht.
- System.CommandLine v2, aber mit fertiger Verdrahtung: `Albatross.CommandLine` v8
Albatross.CommandLine v8 baut auf System.CommandLine v2 auf und liefert einen Source Generator, DI-Integration und eine Hosting-Schicht, um CLI-Boilerplate in .NET 9 und .NET 10 Anwendungen zu eliminieren.
- Wave-IDE in 2026: das minimale Roslyn-Plumbing hinter einer WinForms-IDE auf .NET 10
Wave-IDE zeigt, dass WinForms und Roslyn auf .NET 10 ausreichen, um eine funktionierende C#-IDE zu bauen. Hier ist das minimale Plumbing für inkrementelle Analyse, Autovervollständigung und Diagnostics.
- AWS Lambda unterstützt .NET 10: Was Sie prüfen sollten, bevor Sie die Laufzeit umschalten
AWS Lambda unterstützt jetzt .NET 10, aber das Laufzeit-Upgrade ist nicht der schwierige Teil. Hier ist eine praktische Checkliste, die Cold Starts, Trimming, Native AOT und Deployment-Form abdeckt.
- .NET 10 hat Ihre NIC-Liste explodieren lassen? GetAllNetworkInterfaces() filtern, ohne sich selbst zu belügen
Wie Sie GetAllNetworkInterfaces() in .NET 10 filtern, wenn virtuelle Adapter von Hyper-V, Docker, WSL und VPNs die Liste fluten. Inklusive eines zweistufigen Filters mit expliziten Trade-offs.
- Queryable Encryption + Vector Search im MongoDB EF Core Provider (und warum das für .NET 9 und .NET 10 zählt)
Der MongoDB EF Core Provider unterstützt jetzt Queryable Encryption und Vector Search. Was das für .NET 9- und .NET 10-Apps bedeutet, die bereits EF Core verwenden.
- SwitchMediator v3: Ein Mediator ohne Allokationen, der AOT-freundlich bleibt
SwitchMediator v3 zielt auf allokationsfreien, AOT-freundlichen Dispatch für CQRS-Dienste in .NET 9 und .NET 10. Was das bedeutet und wie Sie Ihren eigenen Mediator messen.
- .NET 10 Performance: SearchValues
Nutzen Sie SearchValues in .NET 10 für leistungsstarke Multi-String-Suche. Ersetzt foreach-Schleifen durch SIMD-beschleunigtes Matching mit den Algorithmen Aho-Corasick und Teddy.
- Tasks streamen mit Task.WhenEach in .NET 9
.NET 9 führt Task.WhenEach ein, das ein IAsyncEnumerable von Tasks zurückgibt, sobald sie abgeschlossen sind. Hier sehen Sie, wie es die Verarbeitung paralleler Ergebnisse vereinfacht, sobald sie eintreffen.
- C# 13: Das Ende der `params`-Allokationen
C# 13 beseitigt endlich die versteckte Array-Allokation hinter params. Sie können params jetzt mit Span, ReadOnlySpan, List und anderen Auflistungstypen für allokationsfreie variadische Methoden verwenden.
- .NET 9: Das Ende von lock(object)
.NET 9 führt System.Threading.Lock ein, eine dedizierte, leichtgewichtige Synchronisationsprimitive, die lock(object) mit besserer Performance und klarerer Absicht ersetzt.
- Häufigkeitszählung mit LINQ CountBy optimieren
Ersetzen Sie GroupBy durch CountBy in .NET 9, um Häufigkeiten sauberer und effizienter zu zählen. Reduziert Allokationen von O(N) auf O(K), indem zwischenliegende Gruppierungsstrukturen übersprungen werden.
2025 / 04
- .NET 10: Stack-Allokation von Arrays von Werttypen
In .NET 10 kann der JIT kleine Arrays fester Größe von Werttypen auf dem Stack allokieren, wodurch Heap-Allokationen entfallen und bis zu 60% mehr Leistung im Vergleich zu .NET 9 erzielt wird.
- Neuerungen in .NET MAUI 10
Eine Zusammenfassung der neuen Funktionen, Verbesserungen und Breaking Changes in .NET MAUI 10, veröffentlicht zusammen mit .NET 10 und C# 14 im November 2025.
- Wie Sie die Symbolfarbe der SearchBar in .NET MAUI ändern
Wie Sie die Symbolfarbe der SearchBar in .NET MAUI mit der neuen Eigenschaft SearchIconColor aus .NET 10 ändern.
- C# 14: Vereinfachte Parameter mit Modifizierern in Lambdas
C# 14 erlaubt die Verwendung der Modifizierer ref, out, in, scoped und ref readonly an implizit typisierten Lambda-Parametern und macht die explizite Angabe der Parametertypen überflüssig.
- Partielle Konstruktoren und Ereignisse in C# 14
C# 14 ermöglicht, Instanzkonstruktoren und Ereignisse als partielle Member zu deklarieren und Definitionen über mehrere Dateien aufzuteilen, für sauberere Codegenerierung und bessere Trennung der Belange.
- C# 14: nameof-Unterstützung für ungebundene generische Typen
C# 14 erweitert den nameof-Ausdruck um Unterstützung für ungebundene generische Typen wie List<> und Dictionary<,>, sodass Platzhalter-Typargumente entfallen.
- Implizite Span-Konvertierungen in C# 14: Erstklassige Unterstützung für Span und ReadOnlySpan
C# 14 fügt eingebaute implizite Konvertierungen zwischen Span, ReadOnlySpan, Arrays und Strings hinzu. Das ermöglicht sauberere APIs, bessere Typinferenz und weniger manuelle AsSpan()-Aufrufe.
- .NET 10: Leistungsverbesserungen bei der Array-Enumeration (JIT Array De-Abstraction)
In .NET 10 reduziert der JIT-Compiler den Overhead beim Iterieren von Arrays über Schnittstellen. Sehen Sie sich Benchmarks an, die .NET 9 und .NET 10 mit foreach, IEnumerable und Conditional Escape Analysis vergleichen.
- C# 14: Das field-Schlüsselwort und Eigenschaften mit field-basierter Speicherung
C# 14 führt das kontextuelle Schlüsselwort field für Eigenschafts-Accessoren ein. So können Sie zu Auto-Properties benutzerdefinierte Logik hinzufügen, ohne ein separates Hintergrundfeld zu deklarieren.
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
- .NET 8 ToFrozenDictionary: Dictionary vs FrozenDictionary
Konvertieren Sie ein Dictionary mit `ToFrozenDictionary()` in .NET 8 in ein FrozenDictionary für schnellere Lesezugriffe. Benchmark, Anwendungsfälle und der Trade-off zur Build-Zeit.
2023 / 11
- AdMob in Ihre MAUI-App einbinden
Erfahren Sie, wie Sie AdMob-Bannerwerbung in Ihrer .NET MAUI-App auf Android und iOS anzeigen, mit schrittweiser Einrichtung und plattformspezifischen Handler-Implementierungen.
- Erste Schritte mit .NET Aspire
Eine Schritt-für-Schritt-Anleitung zum Erstellen Ihrer ersten .NET Aspire-Anwendung, die Projektstruktur, Service Discovery und das Aspire-Dashboard abdeckt.
- .NET Aspire installieren (dotnet workload install aspire)
Installieren Sie .NET Aspire über `dotnet workload install aspire`. Schritt-für-Schritt-Einrichtung von .NET 8, dem Aspire-Workload und Docker unter Windows, macOS und Linux.
- Was ist .NET Aspire?
Eine Übersicht über .NET Aspire, das cloudorientierte Framework zum Erstellen skalierbarer verteilter Anwendungen, einschließlich Orchestrierung, Komponenten und Tooling.
- C# Zufällig Elemente aus einer Liste auswählen
In C# können Sie mit Random.GetItems, einer in .NET 8 eingeführten Methode, zufällig Elemente aus einer Liste auswählen. Lernen Sie, wie es mit praktischen Beispielen funktioniert.
- Wie Sie einen Container als tar.gz in .NET veröffentlichen
Erfahren Sie, wie Sie einen .NET 8 Container als tar.gz-Archiv über die Eigenschaft ContainerArchiveOutputPath mit dotnet publish veröffentlichen.
- MAUI: Wie Sie Handler in einer Bibliothek registrieren
Erfahren Sie, wie Sie View-Handler und Services innerhalb einer .NET MAUI-Bibliothek mit dem Builder-Muster und MauiAppBuilder-Erweiterungsmethoden registrieren.
- Behebung des Fehlers: 'Point' hat keine vordefinierte Größe, daher kann sizeof nur in einem unsafe-Kontext verwendet werden
Beheben Sie den C#-Fehler, bei dem sizeof außerhalb eines unsafe-Kontexts nicht mit Point verwendet werden kann. Zwei Lösungen: unsafe-Code aktivieren oder Marshal.SizeOf verwenden.
- C# Auf das Backing Field einer privaten Eigenschaft per Unsafe Accessor zugreifen
Mit UnsafeAccessorAttribute in .NET 8 auf die automatisch generierten Backing Fields privater Auto-Properties in C# zugreifen, ohne Reflection.
- C# ZIP-Dateien in einen Stream
.NET 8 enthält neue Überladungen von CreateFromDirectory und ExtractToDirectory, mit denen Sie ZIP-Dateien direkt in und aus einem Stream erstellen und extrahieren können, ohne auf die Festplatte zu schreiben.
- .NET 8 Performance: GetGenericTypeDefinition 10x schneller
Benchmarks von GetGenericTypeDefinition in .NET 8 im Vergleich zu .NET 7 zeigen eine fast 10x bessere Leistung. Sehen Sie sich den Benchmark-Code und die Ergebnisse mit BenchmarkDotNet an.
- Wie Sie unter .NET core einen Screenshot erstellen
Erfahren Sie, wie Sie aus einer .NET-Konsolenanwendung mit System.Windows.Forms einen Screenshot Ihres gesamten Desktops aufnehmen. Eine reine Windows-Lösung, die alle Monitore abdeckt.
- C# Wie Sie ein readonly-Feld mit UnsafeAccessor aktualisieren
Erfahren Sie, wie Sie in C# ein readonly-Feld mit UnsafeAccessor aktualisieren, einer Alternative zu Reflection ohne deren Performance-Nachteil. Verfügbar in .NET 8.
- .NET 8 Performance: UnsafeAccessor vs. Reflection
Benchmark von UnsafeAccessor gegen Reflection in .NET 8. So erreicht UnsafeAccessor Performance ohne Overhead im Vergleich zur klassischen Reflection.
2023 / 10
- C# UnsafeAccessor: private Member ohne Reflection (.NET 8)
Verwenden Sie das `[UnsafeAccessor]`-Attribut in .NET 8, um private Felder ohne Overhead zu lesen und private Methoden aufzurufen, ohne Reflection und vollständig AOT-kompatibel.
- C# Wie Sie Features als experimentell kennzeichnen
Ab C# 12 lassen sich Typen, Methoden, Properties oder Assemblies mit dem neuen ExperimentalAttribute als experimentell markieren. Erfahren Sie, wie Sie es mit diagnosticId, pragma-Tags und UrlFormat einsetzen.
- C# ref readonly-Parameter
Der ref readonly-Modifier in C# bietet eine transparentere Möglichkeit, schreibgeschützte Referenzen zu übergeben. Erfahren Sie, wie er den in-Modifier mit besseren Einschränkungen und mehr Sichtbarkeit für den Aufrufer verbessert.
- C# Wie mischt man ein Array?
Der einfachste Weg, ein Array in C# zu mischen, ist Random.Shuffle, eingeführt in .NET 8. Es arbeitet in-place und funktioniert sowohl mit Arrays als auch mit Spans.
- System.Text.Json Wie Sie einen bestehenden Type Info Resolver anpassen
Verwenden Sie die neue WithAddedModifier-Erweiterungsmethode in .NET 8, um beliebige IJsonTypeInfoResolver-Serialisierungsverträge einfach anzupassen, ohne einen Resolver komplett neu zu schreiben.
- HttpClient JSON als AsyncEnumerable abrufen
Die neue Erweiterungsmethode GetFromJsonAsAsyncEnumerable in .NET 8 deserialisiert den JSON-Body einer HTTP-Antwort in ein IAsyncEnumerable. Erfahren Sie, wie Sie sie mit await foreach einsetzen.
- JsonNode API-Neuerungen in .NET 8
Entdecken Sie die neuen API-Erweiterungen in .NET 8 für JsonNode und JsonArray, darunter GetValueKind, GetPropertyName, GetElementIndex, ReplaceWith und ParseAsync.
- Deep Clone und Deep Equality eines JsonNode
Erfahren Sie, wie Sie die neuen Methoden DeepClone() und DeepEquals() auf JsonNode in .NET 8 für tiefes Klonen und Vergleichen von JSON-Knoten verwenden.
- System.Text.Json reflection-basierte Serialisierung deaktivieren
Erfahren Sie, wie Sie ab .NET 8 die reflection-basierte Serialisierung in System.Text.Json für trimmed und native AOT-Anwendungen über die Eigenschaft JsonSerializerIsReflectionEnabledByDefault deaktivieren.
- TypeInfoResolver zu bestehenden JsonSerializerOptions hinzufügen/entfernen
Erfahren Sie, wie Sie TypeInfoResolver-Instanzen mit der neuen TypeInfoResolverChain-Eigenschaft in .NET 8 zu bestehenden JsonSerializerOptions hinzufügen oder daraus entfernen.
- WPF Auswahl im Datei-Dialog von den Zuletzt-verwendet-Listen ausschließen
Verhindern Sie, dass Auswahlen aus WPF-Datei-Dialogen in den 'Zuletzt verwendet' im Windows Explorer und im Startmenü auftauchen, indem Sie in .NET 8 AddToRecent auf false setzen.
- WPF Individuelle Dialogzustände mit ClientGuid
Verwenden Sie die ClientGuid-Eigenschaft in .NET 8, um individuelle Zustände wie Fenstergröße, Position und zuletzt verwendeten Ordner für jeden WPF-Datei-Dialog zu persistieren.
- C# 12 Interceptors
Lernen Sie C# 12 Interceptors kennen, ein experimentelles Compiler-Feature in .NET 8, mit dem Sie Methodenaufrufe zur Compile-Zeit über das InterceptsLocation-Attribut ersetzen können.
- WPF OpenFileDialog-Ordnerbaum auf einen bestimmten Ordner begrenzen
Erfahren Sie, wie Sie den Ordnerbaum des WPF-OpenFileDialogs in .NET 8 mit der RootDirectory-Eigenschaft auf einen bestimmten Wurzelordner einschränken.
- WPF-Hardwarebeschleunigung in RDP
Erfahren Sie, wie Sie in .NET 8 die WPF-Hardwarebeschleunigung über RDP aktivieren, um die Leistung zu verbessern und eine reaktionsfreudigere Remote-Desktop-Erfahrung zu erreichen.
- WPF Open / Select Folder Dialog (OpenFolderDialog in .NET 8)
Lassen Sie Anwender mit dem neuen `OpenFolderDialog` aus .NET 8 in WPF Ordner durchsuchen und einzeln oder mehrfach auswählen. Ersetzt den alten Umweg über den FolderBrowserDialog aus WinForms.
2023 / 09
- Implementation type Data.AppDbContext can't be converted to service type Microsoft.AspNetCore.Identity.IUserStore
Beheben Sie den ASP.NET Core Identity-Fehler, bei dem AppDbContext nicht in IUserStore konvertiert werden kann, indem Sie AddEntityFrameworkStores in Ihre Identity-Konfiguration aufnehmen.
- .NET 8 Properties aus Interface-Hierarchien serialisieren
.NET 8 unterstützt das Serialisieren von Properties aus Interface-Hierarchien, inklusive aller Properties aller Interfaces, abhängig vom deklarierten Variablentyp.
- .NET 8 In nicht-öffentliche Properties deserialisieren
Erfahren Sie, wie Sie in .NET 8 mit dem Attribut JsonInclude und parameterisierten Konstruktoren JSON in nicht-öffentliche Properties deserialisieren.
- .NET 8 JsonStringEnumConverter mit native AOT verwenden
Erfahren Sie, wie Sie den neuen JsonStringEnumConverter<TEnum> in .NET 8 für eine native AOT-kompatible Enum-Serialisierung mit System.Text.Json einsetzen.
- The type or namespace name InterceptsLocationAttribute could not be found
So beheben Sie den Fehler CS0246 für InterceptsLocationAttribute bei C#-Interceptors, indem Sie das Attribut selbst definieren.
- .NET 8 JsonSerializerOptions als readonly markieren
Erfahren Sie, wie Sie in .NET 8 mit MakeReadOnly JsonSerializerOptions-Instanzen schreibgeschützt machen und über IsReadOnly prüfen, ob sie es sind.
- .NET 8 Serialisierung von Half, Int128 und UInt128
System.Text.Json in .NET 8 unterstützt von Haus aus die Serialisierung der numerischen Typen Half, Int128 und UInt128.
- .NET 8 Memory<byte> wird als Base64 serialisiert
Ab .NET 8 werden sowohl Memory<byte> als auch ReadOnlyMemory<byte> als Base64-Strings serialisiert, während andere Typen wie Memory<int> weiter als JSON-Arrays bleiben.
- .NET 8 nicht-öffentliche Member in die JSON-Serialisierung einbeziehen
Erfahren Sie, wie Sie in .NET 8 mit dem Attribut JsonInclude private, protected und internal Properties in die JSON-Serialisierung aufnehmen.
- dotnet workload clean
Mit `dotnet workload clean` entfernen Sie übriggebliebene .NET-Workload-Packs nach einem SDK- oder Visual Studio-Update: Wann Sie es verwenden, was es entfernt und worauf zu achten ist.
- .NET 8 In schreibgeschützte Properties deserialisieren
Erfahren Sie, wie Sie in .NET 8 mit JsonObjectCreationHandling oder JsonSerializerOptions JSON in schreibgeschützte Properties ohne Setter deserialisieren.
- .NET 8 Unbekannte Member bei der JSON-Deserialisierung behandeln
Erfahren Sie, wie Sie in .NET 8 mit JsonUnmappedMemberHandling Exceptions für nicht zugeordnete JSON-Properties bei der Deserialisierung werfen lassen.
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.