BinaryFormatter inaktiverad för de flesta projekttyper
Metoderna BinaryFormatter.Serialize(Stream, Object) och BinaryFormatter.Deserialize(Stream) kastar nu en NotSupportedException vid körning över nästan alla projekttyper, inklusive konsolprogram.
Tidigare beteende
I .NET 7 BinaryFormatter.Serialize(Stream, Object) markerades metoderna och BinaryFormatter.Deserialize(Stream) föråldrade och ett fel uppstod vid kompileringstillfället. Men om ditt program undertryckte obsoletionen kan det fortfarande anropa metoderna och de fungerade korrekt i de flesta projekttyper (exklusive ASP.NET, WASM och MAUI). API:erna fungerade till exempel korrekt i en konsolapp.
Nytt beteende
Från och med .NET 8 genererar de berörda metoderna en NotSupportedException vid körning över alla projekttyper utom Windows Forms och WPF. API:erna fortsätter att vara föråldrade (som fel) för alla projekttyper, inklusive Windows Forms och WPF.
Version introducerad
Förhandsversion av .NET 8 4
Typ av icke-bakåtkompatibel ändring
Den här ändringen är en beteendeförändring.
Orsak till ändringen
Den här körningsändringen är nästa steg i BinaryFormatter-obsoletionsplanen, där BinaryFormatter så småningom tas bort från .NET.
Rekommenderad åtgärd
Det bästa sättet är att migrera bort från BinaryFormatter
på grund av dess säkerhets- och tillförlitlighetsfel. Mer information finns i Föredragna alternativ.
Om du behöver fortsätta använda BinaryFormatter
kan du ange en kompatibilitetsväxel i projektfilen för att återaktivera BinaryFormatter
funktioner. Mer information finns i avsnittet Rekommenderad åtgärd i meddelandet om icke-bakåtkompatibla ändringar i .NET 7. Den kompatibilitetsväxlingen fortsätter att uppfyllas i .NET 8.
Berörda API:er
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream, Object)
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream)