Udostępnij przez


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 metody BinaryFormatter.Serialize(Stream, Object) i BinaryFormatter.Deserialize(Stream) zostały oznaczone jako przestarzałe i powodują błąd w czasie kompilacji. Jeśli jednak aplikacja pominęła stan przestarzałości, mogła nadal wywoływać metody, które funkcjonowały 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 .NET 8, metody, których to dotyczy, 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.

Wersja wprowadzona

.NET 8 (wersja zapoznawcza 4)

Typ zmiany przełamującej

Ta zmiana jest zmianą behawioralną.

Przyczyna zmiany

Ta zmiana w środowisku uruchomieniowym to kolejny etap planu przestarzałości BinaryFormatter, w którym BinaryFormatter ostatecznie zostanie usunięty z platformy .NET.

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, możesz ustawić przełącznik zgodności w pliku projektu, aby ponownie włączyć funkcjonalność BinaryFormatter. Aby uzyskać więcej informacji, zobacz sekcję Zalecane działania powiadomienia o niekompatybilnych zmianach .NET 7. Ten przełącznik zgodności jest nadal honorowany na platformie .NET 8.

Interfejsy API, których dotyczy problem

Zobacz także