Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les méthodes BinaryFormatter.Serialize(Stream, Object) et BinaryFormatter.Deserialize(Stream) lèvent désormais un NotSupportedException pendant l'exécution sur 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é déclarées obsolètes, ce qui a généré une erreur lors de la compilation. Toutefois, si votre application a supprimé l’obsoletion, elle peut toujours appeler les méthodes et elles fonctionnent correctement dans la plupart des types de projet (à l’exception de ASP.NET, WASM et MAUI). Par exemple, les API fonctionnent 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 projets, à l’exception de Windows Forms et WPF. Les API continuent de rester obsolètes (en tant qu’erreur) sur tous les types de projets, notamment Windows Forms et WPF.
Version introduite
.NET 8 Preview 4
Type de changement cassant
Ce changement est un changement de comportement.
Raison de la modification
Ce changement d’exécution est la prochaine étape du plan d’obsoletion BinaryFormatter, dans lequel BinaryFormatter sera finalement supprimé de .NET.
Action recommandée
La meilleure décision consiste à migrer loin de BinaryFormatter en raison de ses failles de sécurité et de fiabilité. Pour 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 les BinaryFormatter fonctionnalités. Pour plus d’informations, consultez la section Action recommandée de la notification de changement majeur de .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)