Breaking Changes in .NET 6

Wenn Sie eine App zu .NET 6 migrieren, sind Sie möglicherweise von den hier aufgeführten Breaking Changes betroffen. Änderungen werden nach Technologiebereich gruppiert, z. B. ASP.NET Core oder Windows Forms.

In diesem Artikel wird erläutert, ob jeder Breaking Change binärkompatibel oder quellkompatibel ist:

  • Binärkompatibel: Vorhandene Binärdateien werden ohne Neukompilierung geladen und ausgeführt, und das Laufzeitverhalten ändert sich nicht.
  • Quellkompatibel: Der Quellcode wird ohne Änderungen erfolgreich kompiliert, wenn er auf die neue Runtime abzielt oder das neue SDK oder die neue Komponente verwendet.

ASP.NET Core

Titel Binärkompatibel Quellkompatibel
ActionResult<T> legt „StatusCode“ auf 200 fest. ✔️
AddDataAnnotationsValidation-Methode als veraltet erklärt ✔️
Assemblys, die aus dem freigegebenen Microsoft.AspNetCore.App-Framework entfernt wurden ✔️
Blazor: Der Parametername wurde in der RequestImageFileAsync-Methode geändert. ✔️
Blazor: WebEventDescriptor.EventArgsType-Eigenschaft ersetzt
Blazor: Bytearray-Interop ✔️
Changed MessagePack library in @microsoft/signalr-protocol-msgpack ✔️
Die Eigenschaft „ClientCertificate“ löst keine erneute Aushandlung für HttpSys aus ✔️
EndpointName-Metadaten werden nicht automatisch festgelegt ✔️
Identität: Bootstrap-Standardversion der Benutzeroberfläche geändert
Kestrel: Protokollmeldungsattribute geändert ✔️
Microsoft.AspNetCore.Http.Features Aufteilung ✔️
Middleware: HTTPS-Umleitungsmiddleware löst Ausnahme für mehrdeutige HTTPS-Ports aus ✔️
Middleware: Neue Use-Überladung ✔️
Minimale API-Umbenennungen in RC 1
Minimale API-Umbenennungen in RC 2
MVC puffert keine IAsyncEnumerable-Typen, wenn System.Text.Json verwendet wird ✔️
Anmerkungen für Nullable-Verweistypen geändert ✔️
Veraltete und entfernte APIs ✔️
PreserveCompilationContext nicht standardmäßig konfiguriert ✔️
Razor: Compiler erzeugt keine Views-Assembly mehr ✔️
Razor: Änderungen der Protokollierungs-ID ✔️
Razor: RazorEngine-APIs wurden als veraltet gekennzeichnet ✔️
SignalR: Java-Client auf RxJava3 aktualisiert ✔️
TryParse- und BindAsync-Methoden werden überprüft

Container

Titel Binärkompatibel Quellkompatibel
Standardformatierung der Konsolenprotokollierung in Containerimages ✔️

Informationen zu anderen Breaking Changes für Container in .NET 6 finden Sie unter .NET 6 Container Release Notes (Versionshinweise zu .NET 6-Containern).

Core .NET-Bibliotheken

Titel Binärkompatibel Quellkompatibel
Veraltete APIs ohne Standarddiagnose-IDs ✔️
Änderungen an Anmerkungen für Nullable-Verweistypen ✔️
Bedingte Zeichenfolgenauswertung in Debugmethoden ✔️
Environment.ProcessorCount-Verhalten unter Windows ✔️
EventSource-Rückrufverhalten ✔️ ✔️
File.Replace unter Unix löst Ausnahmen aus, um eine Übereinstimmung mit Windows zu erreichen ✔️
FileStream sperrt Dateien mit freigegebener Sperre unter Unix ✔️
FileStream synchronisiert den Dateioffset nicht mehr mit dem Betriebssystem
FileStream.Position-Aktualisierung nach Abschluss von ReadAsync oder WriteAsync
Neue Diagnose-IDs für veraltete APIs ✔️
Neue Überladungen der System.Linq.Queryable-Methode ✔️
Ältere Frameworkversionen aus Paket gelöscht ✔️
Parameternamen geändert ✔️
Parameternamen in von Stream abgeleiteten Typen ✔️
Teilweise und Null-Byte-Lesevorgänge in DeflateStream, GZipStream und CryptoStream ✔️
Festlegen des Zeitstempels für schreibgeschützte Dateien auf Windows ✔️
Standardmäßige Zahlenformatanalysegenauigkeit ✔️
Statische abstrakte Member in Schnittstellen ✔️
StringBuilder.Append-Überladungen und Auswertungsreihenfolge ✔️
APIs mit starkem Namen lösen PlatformNotSupportedException aus ✔️
System.Drawing.Common wird nur für Windows unterstützt
System.Security.SecurityContext wurde als veraltet markiert ✔️
Task.FromResult gibt möglicherweise ein Singleton zurück ✔️
Nicht behandelte Ausnahmen von einem BackgroundService ✔️

Kryptografie

Titel Binärkompatibel Quellkompatibel
CreateEncryptor-Methoden lösen Ausnahme bei falscher Feedbackgröße aus ✔️

Bereitstellung

Titel Binärkompatibel Quellkompatibel
x86-Hostpfad unter 64-Bit-Windows ✔️ ✔️

Entity Framework Core

Breaking Changes in EF Core 6

Erweiterungen

Titel Binärkompatibel Quellkompatibel
Überprüfen des Nicht-NULL-Anbieters durch AddProvider ✔️
Ausgabe von InvalidDataException durch FileConfigurationProvider.Load ✔️
Wiederholte XML-Elemente enthalten einen Index ✔️
Ausnahme durch Lösen eines verworfenen ServiceProviders ✔️

Globalisierung

Titel Binärkompatibel Quellkompatibel
Kulturerstellung und Zuordnung von Groß-/Kleinbuchstaben im globalisierungsinvarianten Modus

Interop

Titel Binärkompatibel Quellkompatibel
Statische abstrakte Member in Schnittstellen ✔️

JIT-Compiler

Titel Binärkompatibel Quellkompatibel
Coerce-Aufrufargumente gemäß ECMA-335 ✔️ ✔️

Netzwerk

Titel Binärkompatibel Quellkompatibel
Port aus SPN für Kerberos und Negotiate entfernt ✔️
WebRequest, WebClient und ServicePoint sind veraltet. ✔️

SDK

Titel Binärkompatibel Quellkompatibel
-p-Option für dotnet run ist veraltet ✔️
C#-Code in Vorlagen, die von früheren Versionen nicht unterstützt werden ✔️ ✔️
Implizit enthaltene EditorConfig-Dateien ✔️
Generieren von apphost für macOS ✔️
Generieren eines Fehlers für doppelte Dateien in der Veröffentlichungsausgabe ✔️
„GetTargetFrameworkProperties“ und „GetNearestTargetFramework“ wurden aus dem ProjectReference-Protokoll entfernt ✔️
Installationsspeicherort für x64-Emulationen unter ARM64 ✔️
MSBuild unterstützt das Aufrufen von GetType() nicht mehr
.NET kann nicht an einem benutzerdefinierten Speicherort installiert werden ✔️ ✔️
OutputType nicht automatisch auf WinExe festgelegt ✔️
Veröffentlichen von ReadyToRun mit „--no-restore“ erfordert Änderungen ✔️
Datei „runtimeconfig.dev.json“ nicht generiert ✔️
RuntimeIdentifier-Warnung, wenn „SelfContained“ nicht angegeben ist ✔️
Toolmanifeste im Stammordner ✔️ ✔️
Versionsanforderungen für .NET 6 SDK ✔️ ✔️
Die VERSION-Datei enthält die Buildversion ✔️ ✔️
Schreiben von Verweisassemblys in IntermediateOutputPath ✔️

Serialisierung

Titel Binärkompatibel Quellkompatibel
DataContractSerializer behält beim Deserialisieren von -0 das Vorzeichen bei ✔️
Standardserialisierungsformat für TimeSpan ✔️
IAsyncEnumerable-Serialisierung ✔️
Refactoring der Quellgenerierungs-API für JSON ✔️
JsonNumberHandlingAttribute in Auflistungseigenschaften ✔️
Neue JsonSerializer-Quellgeneratorüberladungen ✔️

Windows Forms

Titel Binärkompatibel Quellkompatibel
C#-Vorlagen verwenden Anwendungsbootstrap ✔️
Ausgewählte TableLayoutSettings-Eigenschaften, die eine InvalidEnumArgumentException-Ausnahme auslösen ✔️
Mit DataGridView verbundene APIs lösen jetzt InvalidOperationException aus ✔️
ListViewGroupCollection-Methoden lösen neue InvalidOperationException aus ✔️
Maximale Textlänge für NotifyIcon.Text erhöht ✔️
ScaleControl wird nur bei Bedarf aufgerufen ✔️
Manche APIs lösen ArgumentNullException aus ✔️
TreeNodeCollection.Item löst eine Ausnahme aus, wenn der Knoten an anderer Stelle zugewiesen wird. ✔️

XML und XSLT

Titel Binärkompatibel Quellkompatibel
XNodeReader.GetAttribute-Verhalten für ungültigen Index ✔️

Weitere Informationen