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 Eingeführt
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. ✔️ Vorschauversion 1
Blazor: WebEventDescriptor.EventArgsType-Eigenschaft ersetzt
Blazor: Bytearray-Interop ✔️ Vorschau 6
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 ✔️ RC 2
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 ✔️ Vorschauversion 4
Minimale API-Umbenennungen in RC 1 RC 1
Minimale API-Umbenennungen in RC 2 RC 2
MVC puffert keine IAsyncEnumerable-Typen, wenn System.Text.Json verwendet wird ✔️ Vorschauversion 4
Anmerkungen für Nullable-Verweistypen geändert ✔️
Veraltete und entfernte APIs ✔️ Vorschauversion 1
PreserveCompilationContext nicht standardmäßig konfiguriert ✔️
Razor: Compiler erzeugt keine Views-Assembly mehr ✔️ Vorschauversion 3
Razor: Änderungen der Protokollierungs-ID ✔️ RC1
Razor: RazorEngine-APIs wurden als veraltet gekennzeichnet ✔️ Vorschauversion 1
SignalR: Java-Client auf RxJava3 aktualisiert ✔️ Vorschauversion 4
TryParse- und BindAsync-Methoden werden überprüft RC 2

Container

Titel Binärkompatibel Quellkompatibel Eingeführt
Standardformatierung der Konsolenprotokollierung in Containerimages ✔️ Wartung 6.0.6

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

Kryptografie

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

Bereitstellung

Titel Binärkompatibel Quellkompatibel Eingeführt
x86-Hostpfad unter 64-Bit-Windows ✔️ ✔️ Wartungsversion

Entity Framework Core

Breaking Changes in EF Core 6

Erweiterungen

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

Globalisierung

Titel Binärkompatibel Quellkompatibel Eingeführt
Kulturerstellung und Zuordnung von Groß-/Kleinbuchstaben im globalisierungsinvarianten Modus Preview 7

Interop

Titel Binärkompatibel Quellkompatibel Eingeführt
Statische abstrakte Member in Schnittstellen ✔️ Preview 7

JIT-Compiler

Titel Binärkompatibel Quellkompatibel Eingeführt
Coerce-Aufrufargumente gemäß ECMA-335 ✔️ ✔️ Vorschauversion 1

Netzwerk

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

SDK

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

Serialisierung

Titel Binärkompatibel Quellkompatibel Eingeführt
DataContractSerializer behält beim Deserialisieren von -0 das Vorzeichen bei ✔️ Wartung 6.0.11
Standardserialisierungsformat für TimeSpan ✔️ Wartung 6.0.2
IAsyncEnumerable-Serialisierung ✔️ Vorschauversion 4
Refactoring der Quellgenerierungs-API für JSON ✔️ RC 2
JsonNumberHandlingAttribute in Auflistungseigenschaften ✔️ RC 1
Neue JsonSerializer-Quellgeneratorüberladungen ✔️ Vorschau 6

Windows Forms

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

XML und XSLT

Titel Binärkompatibel Quellkompatibel Eingeführt
Änderung der NULL-Zulässigkeit bei XmlDocument.XmlResolver ✔️ RC 1
XNodeReader.GetAttribute-Verhalten für ungültigen Index ✔️ Vorschau 2

Siehe auch