Freigeben über


Einschneidende Änderungen in .NET 9

Wenn Sie eine App zu .NET 9 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 – Vorhandene Code- und Binärdateien verhalten sich zur Laufzeit möglicherweise anders. Wenn das neue Verhalten unerwünscht ist, muss vorhandener Code aktualisiert und neu kompiliert werden.

ASP.NET Kern

Titel Art der Änderung
DefaultKeyResolution.ShouldGenerateNewKey geänderte Bedeutung Verhaltensänderung
Dev Cert Export erstellt keinen Ordner mehr Verhaltensänderung
Forwarded Headers Middleware ignoriert X-Forwarded-*-Header von unbekannten Proxys. Verhaltensänderung
HostBuilder aktiviert ValidateOnBuild/ValidateScopes in Entwicklungsumgebung Verhaltensänderung
Legacy-Mono- und Emscripten-APIs werden nicht in den globalen Namespace exportiert Quelle inkompatibel
Middleware-Typen mit mehreren Konstruktoren Verhaltensänderung

Container

Titel Art der Änderung Eingeführt in Version
Container-Images installieren zlib nicht mehr Verhaltensänderung Preview 7
.NET Monitor-Images zu versionierten Tags vereinfacht Verhaltensänderung Vorschau 5

Core .NET-Bibliotheken

Titel Art der Änderung Eingeführt in Version
Hinzufügen einer ZipArchiveEntry-Datei mit CompressionLevel legt allgemeine Bit-Flags für zentrale ZIP-Verzeichnisheader fest Verhaltensänderung Vorschau 5
Geänderte UnsafeAccessor-Unterstützung für nicht geöffnete Generics Verhaltensänderung Vorschau 6
Veraltete APIs mit benutzerdefinierten Diagnose-IDs Quelle inkompatibel (Mehrere)
Mehrdeutige Überladungsauflösung mit Auswirkungen auf implizite StringValues-Operatoren Quelle inkompatibel GA
BigInteger maximale Länge Verhaltensänderung Vorschau 6
BinaryReader.ReadString() gibt "\uFFFD" für falsch formatierte Sequenzen zurück. Verhaltensänderung Preview 7
C#-Überladungsauflösung bevorzugt params Span-Typ-Überladungen Quelle inkompatibel
Das Erstellen eines Arrays vom Typ „System.Void“ ist nicht zulässig Verhaltensänderung Vorschauversion 1
Standardimplementierungen von Equals() und GetHashCode() lösen Ausnahme für Typen aus, die mit InlineArrayAttribute markiert sind. Verhaltensänderung Vorschau 6
EnumConverter überprüft, ob registrierte Typen Enum sind Verhaltensänderung Preview 7
FromKeyedServicesAttribute fügt keinen Nichtschlüsselparameter mehr ein Verhaltensänderung RC 1
Der anfängliche Callback des IncrementingPollingCounters ist asynchron Verhaltensänderung RC 1
Die Größenbeschränkung der Inlinearraystruktur wird erzwungen Verhaltensänderung Vorschauversion 1
InMemoryDirectoryInfo fügt „rootDir“ zu den Dateinamen hinzu Verhaltensänderung Vorschauversion 1
Neue TimeSpan.From*()-Überladungen, die ganze Zahlen annehmen Quelle inkompatibel Vorschau 3
Neue Version einiger OOB-Pakete Quelle inkompatibel Vorschau 5
RuntimeHelpers.GetSubArray gibt einen anderen Typ zurück Verhaltensänderung Vorschauversion 1
String.Trim(params ReadOnlySpan<char>): Überladung entfernt Quelle/Binär inkompatibel GA
Unterstützung leerer Umgebungsvariablen Verhaltensänderung Vorschau 6
ZipArchiveEntry-Namen und Kommentare respektieren das UTF8-Flag Verhaltensänderung RC 1

Kryptografie

Titel Art der Änderung Eingeführt in Version
APIs von System.Security.Cryptography.Pkcs netstandard2.0 entfernt Quelle inkompatibel GA
SafeEvpPKeyHandle.DuplicateHandle erhöht die Referenz des Handle Verhaltensänderung Preview 7
Einige X509Certificate2- und X509Certificate-Konstruktoren sind veraltet Quelle inkompatibel Preview 7
Lebensdauer von Windows Private Key vereinfacht Verhaltensänderung Preview 7

Bereitstellung

Titel Art der Änderung Eingeführt in Version
Veraltete Desktoplaufzeitpakete für Windows/macOS/Linux MonoVM Quelle inkompatibel Preview 7

Entity Framework Core

Grundlegende Änderungen in EF Core 9

Interoperabilität

Titel Art der Änderung Eingeführt in Version
CET standardmäßig unterstützt Binär nicht kompatibel Vorschau 6

JIT-Compiler

Titel Art der Änderung Eingeführt in Version
Konvertierungen von Gleitkomma- in Ganzzahlwerte besitzen jetzt ein Sättigungsverhalten Verhaltensänderung Vorschau 4
Entfernen einiger SVE-APIs Quelle inkompatibel RC 2

Netzwerk

Titel Art der Änderung Eingeführt in Version
Veraltete APIs Quelle inkompatibel Vorschau 6
HttpClient-Metrikbericht server.port bedingungslos Verhaltensänderung Preview 7
HttpClientFactory-Protokollierung bearbeitet die Headerwerte standardmäßig Verhaltensänderung RC 1
HttpClientFactory verwendet SocketsHttpHandler als primären Handler Verhaltensänderung Vorschau 6
HttpListenerRequest.UserAgent kann null sein Quelle inkompatibel Vorschauversion 1
Ausblenden von URI-Abfragen in HttpClient EventSource-Ereignissen Verhaltensänderung Preview 7
Unkenntlichmachung von URI-Abfragen in IHttpClientFactory-Protokollen Verhaltensänderung Preview 7

SDK und MSBuild

Titel Art der Änderung Eingeführt in Version
dotnet sln add lässt keine ungültigen Dateinamen zu. Verhaltensänderung 9.0.2xx
dotnet watch nicht kompatibel mit Hot Reload für alte Frameworks Verhaltensänderung RC 1
dotnet workload erfordert eine Ausgabeänderung Verhaltensänderung Vorschauversion 1
installer Repository-Version nicht mehr dokumentiert Verhaltensänderung Vorschau 5
Umgang mit benutzerdefinierten MSBuild-Kulturressourcen Verhaltensänderung 9.0.200/9.0.300
Neue Standard-RID zur Zielbestimmung im .NET Framework Quelle inkompatibel GA
Terminal Logger ist Standard Verhaltensänderung Vorschauversion 1
Versionsanforderungen für .NET 9 SDK Quelle inkompatibel GA
Warnung für .NET Standard 1.x-Ziel Quelle inkompatibel Vorschau 6
Warnung für .NET 7-Ziel ausgegeben Quelle inkompatibel GA

Serialisierung

Titel Art der Änderung Eingeführt in Version
BinaryFormatter löst immer aus Verhaltensänderung Vorschau 6
JsonDocument-Eigenschaften, die Nullwerte zulassen, werden zu JsonValueKind.Null deserialisiert Verhaltensänderung Vorschauversion 1
System.Text.Json-Metadatenleser entfernt jetzt Meta-Dateneigenschaftennamen Verhaltensänderung GA

Windows Forms

Titel Art der Änderung Eingeführt in Version
BindingSource.SortDescriptions gibt keinen Nullwert zurück Verhaltensänderung Vorschauversion 1
Änderungen an Anmerkungen zur NULL-Zulässigkeit Quelle inkompatibel Vorschauversion 1
ComponentDesigner.Initialize löst ArgumentNullException aus Verhaltensänderung Vorschauversion 1
DataGridViewRowAccessibleObject.Name Startzeilenindex Verhaltensänderung Vorschauversion 1
IMsoComponent-Support ist eine wählbare Option Verhaltensänderung Vorschau 2
Neue Sicherheitsanalysetools Quelle inkompatibel RC 1
Keine Ausnahme, wenn DataGridView NULL ist Verhaltensänderung Vorschauversion 1
PictureBox löst HttpClient-Ausnahmen aus Verhaltensänderung Vorschau 6
StatusStrip verwendet einen anderen Standardrenderer Verhaltensänderung GA

WPF (Windows Presentation Foundation)

Titel Art der Änderung Eingeführt in Version
GetXmlNamespaceMapsTypänderung Verhaltensänderung/Quelle inkompatibel Vorschau 3

Siehe auch