SYSLIB0045: Algunos Factory Method criptográficos están obsoletos

Los siguientes métodos System.Security.Cryptography están obsoletos a partir de .NET 7. Su empleo en el código genera una advertencia SYSLIB0045 en tiempo de compilación. Cada uno de estos Factory Method acepta un argumento de cadena que representa el nombre del algoritmo. Estos métodos llaman a CryptoConfig.CreateFromName y convierten el resultado en el tipo de valor devuelto.

Estos métodos se marcaron como [Obsolete] porque en las aplicaciones recortadas pueden devolver null, cosa que no harían en las aplicaciones no recortadas. Además, en las aplicaciones no recortadas, los comportamientos basados en excepciones de estos métodos sorprenden ocasionalmente a los autores de llamadas, y muchos de los identificadores conocidos están asociados a tipos que están marcados de por sí como [Obsolete].

Solución alternativa

Las llamadas que pasan una cadena de constante se deben cambiar al Factory Method sin parámetros o a una llamada segura para crear el tipo adecuado. Por ejemplo, una llamada a Aes.Create("AES") se puede reemplazar por Aes.Create() o new AesCryptoServiceProvider(). Dado que el tipo AesCryptoServiceProvider también está marcado como [Obsolete], Aes.Create() es el reemplazo preferido.

Las llamadas que pasan una cadena que no es de constante pueden usar su propia tabla de búsqueda o cambiarse para llamar a CryptoConfig.CreateFromName directamente.

Supresión de una advertencia

Si tiene que seguir usando las API obsoletas, puede suprimir la advertencia en el código o en el archivo de proyecto.

Para suprimir solo una infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y luego volver a habilitar la advertencia.

// Disable the warning.
#pragma warning disable SYSLIB0045

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

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

Para suprimir todas las advertencias SYSLIB0045 del proyecto, agregue una propiedad <NoWarn> al archivo del proyecto.

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

Para obtener más información, vea Suprimir advertencias.