BinaryFormatter désactivé dans la plupart des types de projet
Les méthodes BinaryFormatter.Serialize(Stream, Object) et BinaryFormatter.Deserialize(Stream) lèvent désormais par une exception NotSupportedException au moment de l’exécution dans presque tous les types de projets, y compris les applications console.
Comportement précédent
Dans .NET 7, les méthodes BinaryFormatter.Serialize(Stream, Object) et BinaryFormatter.Deserialize(Stream) ont été marquées comme obsolètes et ont généré une erreur au moment de la compilation. Toutefois, si votre application a supprimé l’obsolescence, elle peut toujours appeler les méthodes et elles fonctionnent correctement dans la plupart des types de projets (à l’exception d’ASP.NET, WASM et MAUI). Par exemple, les API ont fonctionné correctement dans une application console.
Nouveau comportement
À compter de .NET 8, les méthodes affectées lèvent un NotSupportedException au moment de l’exécution sur tous les types de projet, à l’exception de Windows Forms et WPF. Les API restent obsolètes (en tant qu’erreur) pour tous les types de projets, y compris Windows Forms et WPF.
Version introduite
.NET 8 Preview 4
Type de changement cassant
Ce changement est un changement de comportement.
Raison du changement
Cette modification au moment de l’exécution est la prochaine étape du plan d’obsolescence BinaryFormatter, qui prévoit la suppression de BinaryFormatter dans .NET.
Action recommandée
La meilleure solution consiste à cesser d’utiliser BinaryFormatter
en raison de ses défauts de sécurité et de fiabilité. Pour obtenir plus d’informations, consultez les Alternatives préférées.
Si vous devez continuer à utiliser BinaryFormatter
, vous pouvez définir un commutateur de compatibilité dans votre fichier projet pour réactiver la fonctionnalité BinaryFormatter
. Pour plus d’informations, consultez la section Action recommandée de la notification de changement cassant .NET 7. Ce commutateur de compatibilité continue d’être respecté dans .NET 8.
API affectées
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream, Object)
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream)