SYSLIB0045 : Certaines méthodes de fabrique de chiffrement sont obsolètes

Les méthodes System.Security.Cryptography suivantes sont obsolètes à partir de .NET 7. Leur utilisation dans le code génère un avertissement SYSLIB0045 au moment de la compilation. Chacune de ces méthodes de fabrique accepte un argument de chaîne qui représente le nom de l’algorithme. Ces méthodes appellent CryptoConfig.CreateFromName et convertissent le résultat en type de retour.

Ces méthodes ont été marquées [Obsolete], car dans les applications découpées, elles peuvent retourner null alors qu’elles ne le feraient pas dans les applications non découpées. En outre, dans les applications non découpées, les comportements basés sur les exceptions de ces méthodes surprend parfois les appelants, et de nombreux identificateurs connus sont associés à des types qui sont eux-mêmes marqués [Obsolete].

Solution de contournement

Les appels qui passent une chaîne constante doivent être remplacés par la méthode de fabrique sans paramètre ou par un appel fort pour créer le type approprié. Par exemple, un appel à Aes.Create("AES") peut être remplacé par Aes.Create() ou new AesCryptoServiceProvider(). Étant donné que le type AesCryptoServiceProvider est également marqué [Obsolete], Aes.Create() est le remplacement préféré.

Les appels qui passent une chaîne non constante peuvent utiliser leur propre table de recherche ou être modifiés pour appeler CryptoConfig.CreateFromName directement.

Supprimer un avertissement

Si vous devez utiliser les API obsolètes, vous pouvez supprimer l’avertissement 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 SYSLIB0045

// Code that uses obsolete API.
// ...

// Re-enable the warning.
#pragma warning restore SYSLIB0045

Pour supprimer tous les avertissements SYSLIB0045 dans votre projet, ajoutez une propriété <NoWarn> à votre fichier projet.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   ...
   <NoWarn>$(NoWarn);SYSLIB0045</NoWarn>
  </PropertyGroup>
</Project>

Pour plus d’informations, consultez Supprimer des avertissements.