Partager via


SYSLIB0011 : la sérialisation BinaryFormatter est obsolète

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.

À 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 :

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