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.
En raison des vulnérabilités de sécurité dans BinaryFormatter, les API suivantes ont été marquées comme obsolètes dans .NET 5. L’utilisation de ces éléments dans le code génère un avertissement ou une erreur SYSLIB0011 au moment de la compilation.
- System.Exception.SerializeObjectState
- BinaryFormatter.Serialize
- BinaryFormatter.Deserialize
- Formatter.Serialize(Stream, Object)
- Formatter.Deserialize(Stream)
- IFormatter.Serialize(Stream, Object)
- IFormatter.Deserialize(Stream)
À compter de .NET 8, BinaryFormatter.Serialize et BinaryFormatter.Deserialize lèvent une exception de type NotSupportedException lors de l’exécution sur la plupart des types de projet. En outre, PreserializedResourceWriter.AddBinaryFormattedResource(String, Byte[], String) est obsolète en tant qu’avertissement, et les API suivantes sont obsolètes en tant qu’erreur :
- System.Runtime.Serialization.Formatter
- System.Runtime.Serialization.IFormatter
- System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
Solutions de contournement
Si vous utilisez BinaryFormatter, vous devriez cesser de l'utiliser en raison de ses failles de sécurité et de fiabilité. Pour plus d’informations, consultez Les risques de désérialisation lors de l’utilisation de BinaryFormatter et des types associés et des alternatives préférées.
Supprimer un avertissement
Si vous devez utiliser les API obsolètes, vous pouvez supprimer l’avertissement/erreur dans le code ou dans votre fichier projet.
Pour supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver, puis réactivez l’avertissement.
// Disable the warning.
#pragma warning disable SYSLIB0011
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0011
Pour supprimer tous les SYSLIB0011 avertissements dans votre projet, ajoutez une <NoWarn> propriété à votre fichier projet.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0011</NoWarn>
</PropertyGroup>
</Project>
Pour plus d’informations, consultez Supprimer des avertissements.
Voir aussi
- Résolution des erreurs d’obsolescence et de désactivation de BinaryFormatter
- Les méthodes de sérialisation BinaryFormatter sont obsolètes et interdites dans les applications ASP.NET (.NET 5)
- Les API de sérialisation BinaryFormatter produisent des erreurs de compilateur (.NET 7)
- BinaryFormatter désactivé dans la plupart des types de projet (.NET 8)