从 .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>