BinaryFormatter für die meisten Projekttypen deaktiviert
Die Methoden BinaryFormatter.Serialize(Stream, Object) und BinaryFormatter.Deserialize(Stream) lösen jetzt zur Laufzeit in nahezu allen Projekttypen eine NotSupportedException aus, was auch für Konsolenanwendungen gilt.
Vorheriges Verhalten
In .NET 7 wurden die Methoden BinaryFormatter.Serialize(Stream, Object) und BinaryFormatter.Deserialize(Stream) als veraltet gekennzeichnet, und es wurde zur Kompilierzeit ein Fehler ausgelöst. Wenn Ihre Anwendung die Veraltung jedoch unterdrückt hat, kann sie die Methoden trotzdem aufrufen, und sie funktionierten in den meisten Projekttypen ordnungsgemäß (mit Ausnahme von ASP.NET, WASM und MAUI). Beispielsweise funktionierten die APIs in einer Konsolen-App ordnungsgemäß.
Neues Verhalten
Ab .NET 8 lösen die betroffenen Methoden zur Laufzeit für alle Projekttypen außer Windows Forms und WPF eine NotSupportedException aus. Die APIs bleiben weiterhin für alle Projekttypen veraltet (als Fehler), einschließlich Windows Forms und WPF.
Eingeführt in Version
.NET 8 Vorschauversion 4
Typ des Breaking Changes
Diese Änderung ist eine Verhaltensänderung.
Grund für die Änderung
Diese Laufzeitänderung bildet die nächste Phase des Plans zur Einstellung von BinaryFormatter, nach dem BinaryFormatter schließlich aus .NET entfernt wird.
Empfohlene Maßnahme
Die beste Vorgehensweise besteht darin, aufgrund von Sicherheits- und Zuverlässigkeitsfehlern von BinaryFormatter
weg zu migrieren. Weitere Informationen finden Sie unter Bevorzugte Alternativen.
Wenn Sie weiterhin BinaryFormatter
verwenden, können Sie einen Kompatibilitätsschalter in Ihrer Projektdatei festlegen, um die Funktionalität von BinaryFormatter
wieder zu aktivieren. Weitere Informationen finden Sie im Abschnitt Empfohlene Aktion der Benachrichtigung zum Breaking Change in .NET 7. Dieser Kompatibilitätsschalter wird auch in .NET 8 weiterhin berücksichtigt.
Betroffene APIs
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream, Object)
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream)