Breaking Changes in .NET 7

Wenn Sie eine App zu .NET 7 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
API-Controlleraktionen versuchen, Parameter aus der Abhängigkeitsinjektion (DI) rückzuschließen ✔️
Rangfolge Präfixumgebungsvariable mit ASPNET-Präfix ✔️ ✔️
AuthenticateAsync für Remoteauthentifizierungsanbieter ✔️
Authentifizierung in WebAssembly-Apps ✔️
Standardauthentifizierungsschema ✔️
Ereignis-IDs für einige „Microsoft.AspNetCore.Mvc.Core“-Protokollmeldungen geändert ✔️
Fallbackdateiendpunkte ✔️
IHubClients und IHubCallerClients blenden Mitglieder aus ✔️
Kestrel: Standardmäßige HTTPS-Bindung entfernt ✔️
Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv und libuv.dll entfernt
Update für Microsoft.Data.SqlClient auf 4.0.1 ✔️
Middleware wird für Endpunkte mit NULL-Anforderungsdelegat nicht mehr zurückgestellt ✔️
MVC-Erkennung eines leeren Texts in der Modellbindung geändert ✔️
Änderungen an der Ausgabecache-API
SignalR-Hub-Methoden versuchen, Parameter aus Abhängigkeitsinjektion (DI) aufzulösen ✔️

Core .NET-Bibliotheken

Titel Binärkompatibel Quellkompatibel
Veraltete APIs mit Standarddiagnose-ID ✔️
Veraltete APIs ohne Standarddiagnose-IDs ✔️
BinaryFormatter-Serialisierungs-APIs erzeugen Compilerfehler ✔️
BrotliStream lässt definierte CompressionLevel-Werte nicht mehr zu ✔️
C++-/CLI-Projekte in Visual Studio ✔️
Änderungen an Reflexion rufen API-Ausnahmen auf ✔️
Entladbare Assembly in nicht entladbarem AssemblyLoadContext ✔️
Änderung der Genauigkeit von DateTime-Additionsmethoden ✔️ ✔️
Entspricht der Änderung des Methodenverhaltens für NaN ✔️
EventSource-Rückrufverhalten ✔️ ✔️
Allgemeine Typeinschränkung für PatternContext<T>
FileStream-Legacystrategie entfernt ✔️
Bibliotheksunterstützung für ältere Frameworks
Maximale Genauigkeit für numerische Formatzeichenfolgen ✔️
Regex-Muster mit korrigierten Bereichen ✔️ ✔️
SerializationFormat.Binary ist veraltet.
System.Drawing.Common-Konfigurationsoption wurde entfernt ✔️ ✔️
NuGet-Paket „System.Runtime.CompilerServices.Unsafe“ ✔️ ✔️
Zeitfelder in symbolischen Links ✔️
Nachverfolgen verknüpfter Cacheeinträge ✔️
Überprüfen von CompressionLevel für BrotliStream ✔️

Konfiguration

Titel Binärkompatibel Quellkompatibel
System.diagnostics-Eintrag in app.config ✔️

Kryptografie

Titel Binärkompatibel Quellkompatibel
Entschlüsseln von EnvelopedCms wird nicht doppelt entpackt ✔️
Überprüfungszeit für Dynamic X509ChainPolicy ✔️
X500DistinguishedName-Analyse von Anzeigenamen ✔️

Bereitstellung

Titel Binärkompatibel Quellkompatibel
Alle Assemblys werden standardmäßig gekürzt ✔️
Lookup auf mehreren Ebenen deaktiviert ✔️
x86-Hostpfad unter 64-Bit-Windows ✔️ ✔️
TrimmerDefaultAction veraltet ✔️

Entity Framework Core

Breaking Changes in EF Core 7

Erweiterungen

Titel Binärkompatibel Quellkompatibel
Binden einer Konfiguration an ein Wörterbuch erweitert Werte ✔️ ✔️
ContentRootPath für Apps, die von Windows-Shell gestartet werden ✔️
Präfixe von Umgebungsvariablen ✔️

Globalisierung

Titel Binärkompatibel Quellkompatibel
Globalisierungs-APIs verwenden ICU-Bibliotheken unter Windows Server ✔️

Interop

Titel Binärkompatibel Quellkompatibel
„RuntimeInformation.OSArchitecture“ unter Emulation ✔️

.NET MAUI

Titel Binärkompatibel Quellkompatibel
Konstruktoren akzeptieren die Basisschnittstelle anstelle des konkreten Typs ✔️
Entfernung von Flussrichtungshilfsmethoden
Neuer UpdateBackground-Parameter ✔️
ScrollToRequest-Eigenschaft wurde umbenannt
Einige Windows-APIs wurden entfernt

Netzwerk

Titel Binärkompatibel Quellkompatibel
AllowRenegotiation: Standardwert ist „false“
Benutzerdefinierte Ping-Nutzlasten unter Linux ✔️
Socket.End-Methoden lösen keine ObjectDisposedException aus. ✔️

SDK und MSBuild

Titel Binärkompatibel Quellkompatibel
Automatische Runtime-ID für bestimmte Projekte ✔️
Automatische Runtime-ID nur für die Veröffentlichung
CLI-Konsolenausgabe verwendet UTF-8
Konsolencodierung nach Abschluss nicht UTF-8 ✔️
MSBuild-Serialisierung von benutzerdefinierten Typen in .NET 7
Parallele SDK-Installationen
Toolmanifeste im Stammordner ✔️ ✔️
Versionsanforderungen für .NET 7 SDK ✔️ ✔️
dotnet test: Konvertieren von -a in Alias --arch anstelle von --test-adapter-path
dotnet test: Konvertieren von -r in Alias --runtime anstelle von --results-dir
--output-Option ist für Befehle auf Projektmappenebene nicht mehr gültig
Das SDK ruft ResolvePackageDependencies nicht mehr auf ✔️

Serialisierung

Titel Binärkompatibel Quellkompatibel
DataContractSerializer behält beim Deserialisieren von -0 das Vorzeichen bei ✔️
Deserialisieren des Versionstyps mit führenden oder nachstehenden Leerzeichen ✔️
JsonSerializerOptions-Kopierkonstruktor enthält JsonSerializerContext ✔️
Polymorphe Serialisierung für Objekttypen ✔️
System.Text.Json-Quellgenerator-Fallback ✔️

Windows Forms

Titel Binärkompatibel Quellkompatibel
Veraltete Versionen und Warnungen ✔️
Manche APIs lösen ArgumentNullException aus ✔️

XML und XSLT

Titel Binärkompatibel Quellkompatibel
„XmlSecureResolver“ ist veraltet

Weitere Informationen