Dela via


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.

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 BinaryFormatterkan 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

Se även