SYSLIB0011 : La sérialisation BinaryFormatter est obsolète

En raison de vulnérabilités de sécurité dans BinaryFormatter, les API suivantes ont été marquées comme obsolètes dans .NET 5. Leur utilisation dans le code génère un avertissement ou une erreur SYSLIB0011 au moment de la compilation.

À compter de .NET 8, BinaryFormatter.Serialize puis BinaryFormatter.Deserialize génèrent un NotSupportedException au moment de l’exécution sur la plupart des types de projets. 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 :

Solutions de contournement

Si vous utilisez BinaryFormatter, vous devez migrer loin de celui-ci en raison de ses défauts de sécurité et de fiabilité. Pour plus d’informations, consultez Risques de désérialisation liés à l’utilisation de BinaryFormatter et des types associés et Alternatives préférées.

Supprimer un avertissement

Si vous devez utiliser les API obsolètes, vous pouvez supprimer l’avertissement/l’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éactiver 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 avertissements SYSLIB0011 dans votre projet, ajoutez une propriété <NoWarn> à 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