Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
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, 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
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream, Object)
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream)