BinaryFormatter wyłączony w większości typów projektów
Metody BinaryFormatter.Serialize(Stream, Object) i BinaryFormatter.Deserialize(Stream) teraz zgłaszają NotSupportedException w czasie wykonywania niemal wszystkie typy projektów, w tym aplikacje konsolowe.
Poprzednie zachowanie
Na platformie .NET 7 BinaryFormatter.Serialize(Stream, Object) metody i BinaryFormatter.Deserialize(Stream) zostały oznaczone jako przestarzałe i zgłosiły błąd w czasie kompilacji. Jeśli jednak aplikacja pominąła obsoletion, nadal może wywołać metody i działają prawidłowo w większości typów projektów (z wyłączeniem ASP.NET, WASM i MAUI). Na przykład interfejsy API działały poprawnie w aplikacji konsolowej.
Nowe zachowanie
Począwszy od platformy .NET 8, których dotyczy problem, metody zgłaszają NotSupportedException w czasie wykonywania we wszystkich typach projektów z wyjątkiem windows Forms i WPF. Interfejsy API nadal pozostają przestarzałe (jako błąd) we wszystkich typach projektów, w tym Windows Forms i WPF.
Wprowadzona wersja
.NET 8 (wersja zapoznawcza 4)
Typ zmiany powodującej niezgodność
Ta zmiana jest zmianą behawioralną.
Przyczyna wprowadzenia zmiany
Ta zmiana czasu wykonywania jest kolejnym etapem planu obsoletion BinaryFormatter, w którym BinaryFormatter ostatecznie zostanie usunięty z platformy .NET.
Zalecana akcja
Najlepszym sposobem działania jest migracja z dala od BinaryFormatter
ze względu na jego wady zabezpieczeń i niezawodności. Aby uzyskać więcej informacji, zobacz Preferowane alternatywy.
Jeśli chcesz kontynuować korzystanie z BinaryFormatter
programu , możesz ustawić przełącznik zgodności w pliku projektu, aby ponownie włączyć BinaryFormatter
funkcję. Aby uzyskać więcej informacji, zobacz sekcję Zalecana akcja powiadomienia o zmianie powodującej niezgodność platformy .NET 7. Ten przełącznik zgodności jest nadal honorowany na platformie .NET 8.
Dotyczy interfejsów API
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream, Object)
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream)