Breaking Changes in .NET 8

Wenn Sie eine App zu .NET 8 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 werden die einzelnen Breaking Changes als mit der Binärdatei inkompatibel, mit der Quelle inkompatibel oder als Verhaltensänderung kategorisiert:

  • Binärdatei inkompatibel: Wenn sie mit der neuen Runtime oder Komponente ausgeführt werden, kann bei vorhandenen Binärdateien ein Breaking Change im Verhalten auftreten, z. B. Fehler beim Laden oder Ausführen. In diesem Fall müssen sie erneut kompiliert werden.

  • Quelle inkompatibel: Bei der Neukompilierung mit dem neuen SDK oder der neuen Komponente oder zur Ausrichtung auf die neue Runtime sind für vorhandenen Quellcode möglicherweise Quelländerungen erforderlich, damit die Kompilierung erfolgreich ist.

  • Verhaltensänderung: Vorhandener Code und vorhandene Binärdateien können sich zur Laufzeit unterschiedlich verhalten. Wenn das neue Verhalten unerwünscht ist, muss vorhandener Code aktualisiert und neu kompiliert werden.

ASP.NET Core

Titel Art der Änderung
„ConcurrencyLimiterMiddleware“ ist veraltet. Quelle inkompatibel
Benutzerdefinierte Konverter für die Serialisierung entfernt Behavior Change
ISystemClock ist veraltet Quelle inkompatibel
Minimale APIs: IFormFile-Parameter erfordern Überprüfungen zur Fälschungssicherheit. Behavior Change
Middleware zur Ratenbegrenzung erfordert AddRateLimiter Behavior Change
Sicherheitstokenereignisse geben ein JSonWebToken wieder Behavior Change
TrimMode ist standardmäßig für Web-SDK-Projekte auf „vollständig“ festgelegt Quelle inkompatibel

Container

Titel Art der Änderung
Paket „ca-certificates“ aus Alpine-Images entfernt Binär nicht kompatibel
Debian-Containerimages, aktualisiert auf Debian 12 Binär inkompatibel/Verhaltensänderung
Standardport ASP.NET Core zu 8080 geändert Behavior Change
Kerberos-Paket aus Alpine- und Debian-Images entfernt Binär nicht kompatibel
„libintl“-Paket aus Alpine-Images entfernt Behavior Change
Container-Tags für mehrere Plattformen nur für Linux verfügbar Behavior Change
Neuer „App“-Benutzer in Linux-Images Behavior Change

Core .NET-Bibliotheken

Titel Art der Änderung
Name des Aktivitätsvorgangs bei NULL Behavior Change
Verhalten von AnonymousPipeServerStream.Dispose Behavior Change
Veraltete APIs mit benutzerdefinierten Diagnose-IDs Quelle inkompatibel
Zuordnung des umgekehrten Schrägstrichs in Unix-Dateipfaden Behavior Change
Base64.DecodeFromUtf8-Methoden ignorieren Leerzeichen Behavior Change
Boolesch-unterstützter Enumerationstypsupport wurde entfernt Behavior Change
Enumeration des aktuellen Laufwerkverzeichnispfads Behavior Change
Enumerable.Sum löst neue OverflowException für einige Eingaben aus Behavior Change
FileStream-Schreibvorgänge beim Schließen der Pipe Behavior Change
FindSystemTimeZoneById gibt kein neues Objekt zurück Behavior Change
GC.GetGeneration gibt möglicherweise „Int32.MaxValue“ zurück. Behavior Change
GetFolderPath-Verhalten unter Unix Behavior Change
GetSystemVersion gibt nicht mehr ImageRuntimeVersion zurück Behavior Change
ITypeDescriptorContext Nullable-Anmerkungen Quelle inkompatibel
Ältere Console.ReadKey-Methode entfernt Behavior Change
Methoden-Generatoren generieren Parameter, wobei HasDefaultValue auf „false“ gesetzt ist Behavior Change
ProcessStartInfo.WindowStyle berücksichtigt, wenn UseShellExecute „false“ Behavior Change
RuntimeIdentifier gibt Plattform zurück, für die die Runtime erstellt wurde Behavior Change
Type.GetType löst Ausnahme für alle ungültigen Elementtypen aus Behavior Change

Kryptografie

Titel Art der Änderung Eingeführt
Größe des AesGcm-Authentifizierungstags auf macOS Behavior Change Vorschauversion 1
RSA.EncryptValue und RSA.DecryptValue veraltet Quelle inkompatibel Vorschauversion 1

Bereitstellung

Titel Art der Änderung
Host bestimmt RID-spezifische Ressourcen Binär inkompatibel/Verhaltensänderung
.NET Monitor enthält nur unfassbare Bilder Behavior Change
StripSymbols ist standardmäßig auf TRUE festgelegt. Behavior Change

Entity Framework Core

Breaking Changes in EF Core 8

Erweiterungen

Titel Art der Änderung
ActivatorUtilities.CreateInstance verhält sich konsistent Behavior Change
ActivatorUtilities.CreateInstance erfordert einen Nicht-NULL-Anbieter Behavior Change
ConfigurationBinder löst bei nicht übereinstimmendem Wert aus Behavior Change
Das Paket ConfigurationManager verweist nicht mehr auf System.Security.Permissions Quelle inkompatibel
Das Paket ConfigurationManager verweist nicht mehr auf System.Security.Permissions Quelle inkompatibel
Leere Schlüssel, die dem Wörterbuch durch Konfigurationsordner hinzugefügt werden Behavior Change
HostApplicationBuilderSettings.Args berücksichtigt von HostApplicationBuilder ctor Behavior Change
„ManagementDateTimeConverter.ToDateTime“ gibt eine lokale Zeit zurück. Behavior Change
System.Formats.Cbor DateTimeOffset-Formatierungsänderung Behavior Change

Globalisierung

Titel Art der Änderung
Datums- und Uhrzeitkonverter berücksichtigen das Kulturargument. Behavior Change
TwoDigitYearMax lautet standardmäßig 2049 Behavior Change

Interop

Titel Art der Änderung
CreateObjectFlags.Unwrap wird nur in Zielinstanz entpackt Behavior Change
Benutzerdefinierte Marshaller erfordern zusätzliche Member Quelle inkompatibel
Die IDispatchImplAttribute-API wird entfernt Binär nicht kompatibel
Der implizite öffentliche Standardkonstruktor JSFunctionBinding wurde entfernt Binär nicht kompatibel
SafeHandle-Typen müssen über öffentlichen Konstruktor verfügen Quelle inkompatibel

Netzwerk

Titel Art der Änderung
SendFile löst für verbindungslose Sockets NotSupportedException aus Behavior Change

Spiegelung

Titel Art der Änderung
IntPtr wird nicht mehr für Funktionszeigertypen verwendet. Behavior Change

SDK

Titel Art der Änderung
CLI-Konsolenausgabe verwendet UTF-8 Verhaltensänderung/Quelle und Binärdatei inkompatibel
Konsolencodierung nach Abschluss nicht UTF-8 Behavioral Change/Binärdatei inkompatibel
Container verwenden standardmäßig das Tag „latest“ Behavior Change
„dotnet pack“ verwendet die Release-Konfiguration. Verhaltensänderung/Quelle inkompatibel
„dotnet publish“ verwendet die Release-Konfiguration. Verhaltensänderung/Quelle inkompatibel
Doppelte Ausgabe bei -getItem, -getProperty und -getTargetResult Behavior Change
Implizites using für System.Net.Http wird nicht mehr hinzugefügt Verhaltensänderung/Quelle inkompatibel
MSBuild – benutzerdefinierte abgeleitete Buildereignisse sind veraltet Behavior Change
MSBuild berücksichtigt DOTNET_CLI_UI_LANGUAGE Behavior Change
Laufzeitspezifische Apps nicht eigenständig Quelle/Binär inkompatibel
Die Option „--arch“ impliziert keine Eigenständigkeit. Behavior Change
„dotnet restore“ erzeugt Sicherheitsrisikowarnungen Behavior Change
SDK verwendet ein kleineres RID-Diagramm Verhaltensänderung/Quelle inkompatibel
Source Link ist jetzt im .NET SDK enthalten Quelle inkompatibel
Das Kürzen darf nicht mit .NET Standard oder .NET Framework verwendet werden. Behavior Change
Ungelistete Pakete werden nicht standardmäßig für .NET-Tools installiert Behavior Change
USER-Datei wird in äußere Builds importiert Behavior Change
Versionsanforderungen für .NET 8 SDK Quelle inkompatibel

Serialisierung

Titel Art der Änderung
BinaryFormatter für die meisten Projekte deaktiviert Behavior Change
Fehler bei reflexionsbasierter Serialisierung von PublishedTrimmed-Projekten Behavior Change
Reflektionsbasiertes Deserialisierungsmodul löst Metadaten eifrig auf Behavior Change

Windows Forms

Titel Art der Änderung
Ankerlayout wurde geändert Behavior Change
Zertifikate werden vor dem Laden von Remoteimages in PictureBox überprüft Behavior Change
DefaultValueAttribute wurde aus einigen Eigenschaften entfernt Behavior Change
ExceptionCollection ctor löst ArgumentException aus Behavior Change
Skalieren von Formularen gemäß AutoScaleMode Behavior Change
ImageList.ColorDepth-Standard ist Depth32Bit Behavior Change
System.Windows.Extensions verweist nicht auf System.Drawing.Common Quelle inkompatibel
TableLayoutStyleCollection löst ArgumentException aus Behavior Change
Formulare der obersten Ebene skalieren die minimale und maximale Größe auf DPI Behavior Change
Kennzeichnung von WFDEV002 als veraltet ist jetzt ein Fehler Quelle inkompatibel

Weitere Informationen