Freigeben über


Breaking Changes 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: 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.

Hinweis

Dies ist nicht die endgültige Fassung dieses Artikels. Nicht alle Breaking Changes für .NET 9 werden hier aufgeführt. Informationen zu noch nicht veröffentlichten Breaking Changes finden Sie unter Issues of .NET.

ASP.NET Core

Titel Art der Änderung Eingeführt in Version
Die Bedeutung von DefaultKeyResolution.ShouldGenerateNewKey wurde geändert. Behavior Change Preview 3
Dev Cert Export erstellt keinen Ordner mehr Behavior Change RC 1
HostBuilder aktiviert ValidateOnBuild/ValidateScopes in Entwicklungsumgebung Behavior Change Preview 7
Legacy-Mono- und Emscripten-APIs werden nicht in den globalen Namespace exportiert Quelle inkompatibel Allgemein verfügbar
Middleware-Typen mit mehreren Konstruktoren Behavior Change RC 1

Container

Titel Art der Änderung Eingeführt in Version
Containerimages installieren zlib nicht mehr Behavior Change Preview 7
.NET Monitor-Images zu versionierten Tags vereinfacht Behavior Change Preview 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 Behavior Change Preview 5
Geänderte UnsafeAccessor-Unterstützung für nicht geöffnete Generics Behavior Change Vorschau 6
Veraltete APIs mit benutzerdefinierten Diagnose-IDs Quelle inkompatibel (Mehrere)
BigInteger maximale Länge Behavior Change Vorschau 6
BinaryReader.GetString() gibt "\uFFFD" für falsch formatierte Sequenzen zurück. Behavior Change Preview 7
C#-Überladungsauflösung bevorzugt params Span-Typ-Überladungen Quelle inkompatibel
Der Arraytyp „System.Void“ ist nicht zulässig Behavior Change Vorschauversion 1
Standardimplementierungen von Equals() und GetHashCode() lösen Ausnahme für Typen aus, die mit InlineArrayAttribute markiert sind. Behavior Change Vorschau 6
EnumConverter überprüft registrierte Typen, um aufgezählt zu werden Behavior Change Preview 7
FromKeyedServicesAttribute fügt keinen Nichtschlüsselparameter mehr ein Behavior Change RC 1
Anfänglicher IncrementingPollingCounter-Rückruf ist asynchron Behavior Change RC 1
Die Größenbeschränkung der Inlinearraystruktur wird erzwungen. Behavior Change Vorschauversion 1
InMemoryDirectoryInfo stellt Dateien „rootDir“ voran. Behavior Change Vorschauversion 1
Neue TimeSpan.From*()-Überladungen, die ganze Zahlen annehmen Quelle inkompatibel Preview 3
Neue Version einiger OOB-Pakete Quelle inkompatibel Preview 5
RuntimeHelpers.GetSubArray gibt einen anderen Typ zurück Behavior Change Vorschauversion 1
String.Trim(params ReadOnlySpan<char>) overload removed Quelle/Binär inkompatibel Allgemein verfügbar
Unterstützung leerer Umgebungsvariablen Behavior Change Vorschau 6
ZipArchiveEntry-Namen und Kommentare respektieren das UTF8-Flag Behavior Change RC 1

Kryptografie

Titel Art der Änderung Eingeführt in Version
SafeEvpPKeyHandle.DuplicateHandle erhöht die Referenz des Handle Behavior Change Preview 7
Einige X509Certificate2- und X509Certificate-Konstruktoren sind veraltet Quelle inkompatibel Preview 7
Lebensdauer von Windows Private Key vereinfacht Behavior Change Preview 7

Bereitstellung

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

Interop

Titel Art der Änderung Eingeführt in Version
CET wird 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 Behavior Change Vorschauversion 4
Entfernen einiger SVE-APIs Quelle inkompatibel RC 2

Netzwerk

Titel Art der Änderung Eingeführt in Version
API-Verschleierungen Quelle inkompatibel Vorschau 6
HttpClient-Metrikbericht server.port bedingungslos Behavior Change Preview 7
HttpClientFactory-Protokollierung bearbeitet die Headerwerte standardmäßig Behavior Change RC 1
HttpClientFactory verwendet SocketsHttpHandler als primären Handler Behavior Change Vorschau 6
HttpListenerRequest.UserAgent ist nullfähig Quelle inkompatibel Vorschauversion 1
URI-Abfrage redaction in HttpClient EventSource-Ereignissen Behavior Change Preview 7
URI-Abfrage redaction in IHttpClientFactory-Protokollen Behavior Change Preview 7

SDK und MSBuild

Titel Art der Änderung Eingeführt in Version
dotnet restore Überwacht transitive Pakete Behavior Change Vorschau 6
dotnet sln add lässt keine ungültigen Dateinamen zu. Behavior Change 9.0.2xx
dotnet watch Nicht kompatibel mit Hot Reload für alte Frameworks Behavior Change RC 1
dotnet workload erfordert eine Ausgabeänderung Behavior Change Vorschauversion 1
installer Version des Repositorys nicht mehr dokumentiert Behavior Change Preview 5
Neue Standard-RID zur Zielbestimmung im .NET Framework Quelle inkompatibel Allgemein verfügbar
Terminal-Logger ist standardmäßig Behavior Change Vorschauversion 1
Versionsanforderungen für .NET 9 SDK Quelle inkompatibel Allgemein verfügbar
Warnung für .NET Standard 1.x-Ziel ausgegeben Quelle inkompatibel Vorschau 6
Warnung für .NET 7-Ziel ausgegeben Quelle inkompatibel Allgemein verfügbar

Serialisierung

Titel Art der Änderung Eingeführt in Version
BinaryFormatter löst immer aus Behavior Change Vorschau 6
JsonDocument-Eigenschaften, die Nullwerte zulassen, werden zu JsonValueKind.Null deserialisiert Behavior Change Vorschauversion 1

Windows Forms

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

WPF

Titel Art der Änderung Eingeführt in Version
GetXmlNamespaceMaps-Typänderung Verhaltensänderung/Quelle inkompatibel Preview 3

Weitere Informationen