Breaking Changes in .NET 5

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

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
ASP.NET Core-Apps deserialisieren Zahlen in Anführungszeichen. ✔️
Die APIs AzureAD.UI und AzureADB2C.UI sind veraltet. ✔️
Die BinaryFormatter-Serialisierungsmethoden sind veraltet. ✔️
Die Ressource im Endpunktrouting ist HttpContext ✔️
Azure-Integrationspakete mit Präfix „Microsoft“ entfernt ✔️
Blazor: Logik für die Routingrangfolge in Blazor-Apps geändert ✔️
Blazor: Aktualisierte Browserunterstützung ✔️ ✔️
Blazor: Unbedeutende Leerzeichen, die vom Compiler entfernt wurden ✔️
Blazor: Die JSObjectReference- und JSInProcessObjectReference-Typen sind intern. ✔️
Blazor: Das Zielframework von NuGet-Paketen wurde geändert ✔️
Blazor: Feature ProtectedBrowserStorage wurde in das freigegebene Framework verschoben ✔️
Blazor: Schreibgeschützte öffentliche RenderTreeFrame-Felder sind jetzt Eigenschaften. ✔️
Blazor: Aktualisierte Validierungslogik für statische Webressourcen ✔️
Kryptografie-APIs werden im Browser nicht unterstützt. ✔️
Erweiterungen: Paketverweisänderungen ✔️
BadHttpRequestException-Typen für Kestrel und IIS sind veraltet. ✔️
HttpClient-Instanzen, die von IHttpClientFactory erstellt wurden, protokollieren Integerstatuscodes ✔️
HttpSys: Erneute Aushandlung für Clientzertifikate standardmäßig deaktiviert ✔️
IIS: Abfragezeichenfolgen für die UrlRewrite-Middleware werden beibehalten ✔️
Kestrel: Standardmäßig erkannte Konfigurationsänderungen ✔️
Kestrel: Standardmäßig unterstützte TLS-Protokollversionen geändert ✔️
Kestrel: HTTP/2 über TLS ist für nicht kompatible Windows-Versionen deaktiviert ✔️ ✔️
Kestrel: Markierung von libuv-Transport als veraltet ✔️
Veraltete Eigenschaften in ConsoleLoggerOptions ✔️
ResourceManagerWithCultureStringLocalizer-Klasse und WithCulture-Schnittstellenmember entfernt ✔️
„Pubternal“-APIs entfernt ✔️
Ein veralteter Konstruktor wurde in der Middleware für Anforderungslokalisierung entfernt ✔️
Middleware: Datenbankfehlerseite als veraltet markiert ✔️
Ausnahmehandlermiddleware löst ursprüngliche Ausnahme aus ✔️ ✔️
ObjectModelValidator ruft eine neue Überladung von Validate auf ✔️
Die Codierung für Cookienamen wurde entfernt ✔️
Die Versionen des IdentityModel-NuGet-Pakets wurden aktualisiert ✔️
SignalR: Optionstyp für das MessagePack-Hubprotokoll geändert ✔️
SignalR: Hub-Protokoll „MessagePack“ wurde verschoben ✔️
UseSignalR- und UseConnections-Methoden entfernt ✔️
CSV-Inhaltstyp in standardkonform geändert ✔️

Codeanalyse

Titel Binärkompatibel Quellkompatibel
CA1416-Warnung ✔️
CA1417-Warnung ✔️
CA1831-Warnung ✔️
CA2013-Warnung ✔️
CA2014-Warnung ✔️
CA2015-Warnung ✔️
CA2200-Warnung ✔️
CA2247-Warnung ✔️

Core .NET-Bibliotheken

Titel Binärkompatibel Quellkompatibel
Assemblybezogene API-Änderungen für Veröffentlichung einer einzelnen Datei ✔️
Die BinaryFormatter-Serialisierungsmethoden sind veraltet. ✔️
Codezugriffssicherheit-APIs sind veraltet. ✔️
CreateCounterSetInstance löst InvalidOperationException aus. ✔️
Das ActivityIdFormat-Standardformat ist W3C ✔️
Environment.OSVersion gibt die richtige Version aus. ✔️
Der Wert von FrameworkDescription entspricht „.NET“ und nicht „.NET Core“. ✔️
Die GAC-APIs sind veraltet. ✔️
Hardwareinterne IsSupported-Überprüfungen ✔️
IntPtr und UIntPtr implementieren IFormattable ✔️
LastIndexOf behandelt leere Suchzeichenfolgen. ✔️
URI-Pfade mit Nicht-ASCII-Zeichen auf UNIX ✔️
Veraltete APIs ohne Standarddiagnose-IDs ✔️
Veraltete Eigenschaften in ConsoleLoggerOptions ✔️
Komplexität von OrderBy.First in LINQ ✔️
OSPlatform-Attribute wurden umbenannt oder entfernt ✔️
Das Paket Microsoft.DotNet.PlatformAbstractions wurde entfernt ✔️
PrincipalPermissionAttribute ist veraltet ✔️
Parameternamensänderungen aus Vorschauversionen ✔️
Änderung des Parameternamen in Verweisassemblys ✔️
Remoting-APIs sind veraltet ✔️
Reihenfolge der „Activity.Tags“-Liste ist umgekehrt. ✔️
SSE- und SSE2-Vergleichsmethoden behandeln NaN. ✔️
Thread.Abort ist veraltet ✔️
URI-Erkennung von UNC-Pfaden unter UNIX ✔️
UTF-7-Codepfade sind veraltet ✔️
Behavior Change für Vector2.Lerp und Vector4.Lerp ✔️
Vector<T> löst NotSupportedException aus ✔️

Kryptografie

Titel Binärkompatibel Quellkompatibel
Kryptografie-APIs werden im Browser nicht unterstützt. ✔️
Cryptography.Oid ist nur init. ✔️
TLS-Standardverschlüsselungssuites unter Linux ✔️
Create()-Überladungen für kryptografische Abstraktionen sind veraltet. ✔️
Der Standardwert für FeedbackSize wurde geändert. ✔️

Entity Framework Core

Breaking Changes in EF Core 5.0

Globalisierung

Titel Binärkompatibel Quellkompatibel
Verwenden von ICU-Bibliotheken unter Windows ✔️
StringInfo und TextElementEnumerator sind mit UAX29 kompatibel. ✔️
Geänderte Unicode-Kategorie für Zeichen in Lateinisch-1 ✔️
TextInfo.ListSeparator-Werte geändert ✔️

Interop

Titel Binärkompatibel Quellkompatibel
Die Unterstützung für WinRT wurde entfernt. ✔️
Bei Umwandlung von RCW in InterfaceIsIInspectable wird eine Ausnahme ausgelöst. ✔️
Keine A/W-Überprüfung des Suffixes auf anderen Plattformen als Windows ✔️

Netzwerk

Titel Binärkompatibel Quellkompatibel
Verarbeitung von Cookiepfaden ist mit RFC 6265 konform. ✔️
LocalEndPoint wird nach dem Aufrufen von SendToAsync aktualisiert ✔️
MulticastOption.Group akzeptiert keine NULL-Werte. ✔️
Streams ermöglichen aufeinanderfolgende Begin-Vorgänge. ✔️
Entfernung von WinHttpHandler aus der .NET-Runtime ✔️

SDK

Titel Binärkompatibel Quellkompatibel
Directory.Packages.props-Dateien werden standardmäßig importiert. ✔️
Fehler wird generiert, wenn ausführbares Projekt auf nicht übereinstimmendes ausführbares Projekt verweist ✔️
FrameworkReference wurde durch WindowsSdkPackageVersion für Windows SDK ersetzt ✔️
NETCOREAPP3_1-Präprozessorsymbol nicht definiert ✔️
OutputType auf WinExe festgelegt ✔️
Behavior Change von PublishDepsFilePath ✔️
TargetFramework-Änderung von „netcoreapp“ in „net“ ✔️
WinForms- und WPF-Apps verwenden Microsoft.NET.Sdk ✔️

Sicherheit

Titel Binärkompatibel Quellkompatibel
Codezugriffssicherheit-APIs sind veraltet. ✔️
PrincipalPermissionAttribute ist veraltet ✔️
UTF-7-Codepfade sind veraltet ✔️

Serialisierung

Titel Binärkompatibel Quellkompatibel
Ausnahmen für BinaryFormatter.Deserialize-Umbrüche ✔️
JsonSerializer.Deserialize erfordert Zeichenfolgen mit einzelnem Zeichen ✔️
ASP.NET Core-Apps deserialisieren Zahlen in Anführungszeichen. ✔️
JsonSerializer.Serialize löst ArgumentNullException aus. ✔️
Nicht öffentliche parameterlose Konstruktoren, die nicht für die Deserialisierung verwendet werden ✔️
Beim Serialisieren von Schlüssel-Wert-Paaren werden Optionen berücksichtigt. ✔️

Windows Forms

Titel Binärkompatibel Quellkompatibel
Nativer Code kann nicht auf Windows Forms-Objekte zugreifen. ✔️
OutputType auf WinExe festgelegt ✔️
DataGridView setzt benutzerdefinierte Schriftarten nicht zurück. ✔️
Methoden lösen ArgumentException aus. ✔️
Methoden lösen ArgumentNullException aus. ✔️
Eigenschaften lösen ArgumentOutOfRangeException aus. ✔️
TextFormatFlags.ModifyString ist veraltet ✔️
DataGridView-APIs lösen InvalidOperationException aus. ✔️
WinForms-Apps verwenden Microsoft.NET.Sdk. ✔️
Statusleisten-Steuerelement wurde entfernt ✔️

WPF

Titel Binärkompatibel Quellkompatibel
OutputType auf WinExe festgelegt ✔️
WPF-Apps verwenden Microsoft.NET.Sdk. ✔️

Weitere Informationen