SYSLIB0021:派生加密类型已过时

2022-01-06 16:58:24 浏览数 (1)

从 .NET 6 开始,以下派生加密类型标记为已过时。 在代码中使用这些 API 会在编译时生成警告 SYSLIB0021。

System.Security.Cryptography.AesCryptoServiceProvider

System.Security.Cryptography.AesManaged

System.Security.Cryptography.DESCryptoServiceProvider

System.Security.Cryptography.MD5CryptoServiceProvider

System.Security.Cryptography.RC2CryptoServiceProvider

System.Security.Cryptography.SHA1CryptoServiceProvider

System.Security.Cryptography.SHA1Managed

System.Security.Cryptography.SHA256Managed

System.Security.Cryptography.SHA256CryptoServiceProvider

System.Security.Cryptography.SHA384Managed

System.Security.Cryptography.SHA384CryptoServiceProvider

System.Security.Cryptography.SHA512Managed

System.Security.Cryptography.SHA512CryptoServiceProvider

System.Security.Cryptography.TripleDESCryptoServiceProvider

解决方法

请改为对基类型使用 Create 方法。 例如,请使用 TripleDES.Create 而不是 TripleDESCryptoServiceProvider。

禁止显示警告

建议尽可能使用可用的解决方法。 但是,如果无法更改代码,可以通过 #pragma 指令或 <NoWarn> 项目设置来禁止显示警告。 如果必须使用过时 API,并且 SYSLIB0XXX 诊断没有显示为错误,则可以在代码或项目文件中取消该警告。

若要禁止显示代码中的警告,请执行以下操作:

代码语言:javascript复制
// Disable the warning.
#pragma warning disable SYSLIB0001
// Code that uses obsolete API.
//...
// Re-enable the warning.
#pragma warning restore SYSLIB0001

若要禁止显示项目文件中的警告,请执行以下操作:

代码语言:javascript复制
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   <TargetFramework>net5.0</TargetFramework>
   <!-- NoWarn below suppresses SYSLIB0001 project-wide -->
   <NoWarn> 

0 人点赞