.NET 5+ 中已过时的功能

从 .NET 5 开始,一些新标记为已过时的 API 使用 ObsoleteAttribute 上的两个新属性。

ObsoleteAttribute.DiagnosticId 属性指示编译器使用自定义诊断 ID 产生生成警告。 通过自定义 ID 可专门、单独地取消过时警告。 对于 .NET 5+ 过时,自定义诊断 ID 的格式为 SYSLIB0XXX。

ObsoleteAttribute.UrlFormat 属性指示编译器包含一个 URL 链接,可了解有关过时的详细信息。

如果由于使用过时的 API 而遇到生成警告或错误,请遵循参考部分中列出的诊断 ID 所提供的特定指导。 不能使用过时类型或成员的标准诊断 ID (CS0618) 取消有关这些过时类型或成员的警告或错误;请改用自定义 SYSLIB0XXX 诊断 ID 值。 有关详细信息,请参阅取消警告。

参考

下表提供了 .NET 5+ 中 SYSLIB0XXX 过时的索引。

诊断 ID

警告或错误

说明

SYSLIB0001

警告

UTF-7 编码不安全,因此不应使用。 请考虑改用 UTF-8。

SYSLIB0002

错误

PrincipalPermissionAttribute 不受运行时支持,不得使用。

SYSLIB0003

警告

运行时不支持或不接受代码访问安全性 (CAS)。

SYSLIB0004

警告

不支持受约束的执行区域 (CER) 功能。

SYSLIB0005

警告

不支持全局程序集缓存 (GAC)。

SYSLIB0006

警告

Thread.Abort() 不受支持并会引发 PlatformNotSupportedException。

SYSLIB0007

警告

不支持此加密算法的默认实现。

SYSLIB0008

警告

CreatePdbGenerator() API 不受支持并会引发 PlatformNotSupportedException。

SYSLIB0009

警告

AuthenticationManager.Authenticate 和 AuthenticationManager.PreAuthenticate 方法都不受支持并会引发 PlatformNotSupportedException。

SYSLIB0010

警告

某些远程处理 API 不受支持并会引发 PlatformNotSupportedException。

SYSLIB0011

警告

BinaryFormatter 序列化已过时,不应使用。

SYSLIB0012

警告

包含 Assembly.CodeBase 和 Assembly.EscapedCodeBase 只是为了实现 .NET Framework 兼容性。 请改用 Assembly.Location。

SYSLIB0013

警告

在某些情况下,Uri.EscapeUriString(String) 可能会导致 Uri 字符串损坏。 请考虑改用 Uri.EscapeDataString(String) 查询字符串组件。

SYSLIB0014

错误

WebRequest、HttpWebRequest、ServicePoint 与 WebClient 已过时。 请改用 HttpClient。

SYSLIB0015

警告

DisablePrivateReflectionAttribute 在 .NET 6+ 中不起作用。

SYSLIB0016

警告

为改善性能并减少分配,使用接受参数的 Graphics.GetContextInfo 重载。

SYSLIB0017

警告

强名称签名不受支持并引发 PlatformNotSupportedException。

SYSLIB0018

警告

仅反射加载不受支持并引发 PlatformNotSupportedException。

SYSLIB0019

警告

不再支持 System.Runtime.InteropServices.RuntimeEnvironment 成员 SystemConfigurationFile、GetRuntimeInterfaceAsIntPtr(Guid, Guid) 与 GetRuntimeInterfaceAsObject(Guid, Guid) 并引发 PlatformNotSupportedException。

SYSLIB0020

警告

JsonSerializerOptions.IgnoreNullValues 已过时。 若要在序列化时忽略 null 值,请将 DefaultIgnoreCondition 设为 JsonIgnoreCondition.WhenWritingNull。

SYSLIB0021

警告

派生的加密类型已过时。 请改为对基类型使用 Create 方法。

SYSLIB0022

警告

Rijndael 和 RijndaelManaged 类型已过时。 请改用 Aes。

SYSLIB0023

警告

RNGCryptoServiceProvider 已过时。 若要生成随机数,请改为使用 RandomNumberGenerator 静态方法之一。

SYSLIB0024

警告

不支持创建和卸载 AppDomains,并引发异常。

SYSLIB0025

警告

SuppressIldasmAttribute 在 .NET 6+ 中不起作用。

SYSLIB0026

警告

X509Certificate 和 X509Certificate2 是不可变的。 使用适当的构造函数创建新证书。

SYSLIB0027

警告

PublicKey.Key 已过时。 使用适当的方法获取公钥,如 GetRSAPublicKey()。

SYSLIB0028

警告

X509Certificate2.PrivateKey 已过时。 使用适当的方法获取私钥(例如 RSACertificateExtensions.GetRSAPrivateKey(X509Certificate2)),或使用 X509Certificate2.CopyWithPrivateKey(ECDiffieHellman) 方法创建一个具有私钥的新实例。

SYSLIB0029

警告

ProduceLegacyHmacValues 已过时。 不再支持生成旧的 HMAC 值。

SYSLIB0030

警告

HMACSHA1 始终使用平台提供的算法实现。 使用不带 useManagedSha1 参数的构造函数。

SYSLIB0031

警告

CryptoConfig.EncodeOID(String) 已过时。 使用 System.Formats.Asn1 中提供的 ASN.1 功能。

SYSLIB0032

警告

不支持从进程状态已损坏异常中恢复;将忽略 HandleProcessCorruptedStateExceptionsAttribute。

SYSLIB0033

警告

Rfc2898DeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) 已过时,不受支持。 请改用 PasswordDeriveBytes.CryptDeriveKey(String, String, Int32, Byte[])。

SYSLIB0034

警告

CmsSigner(CspParameters) 已过时。 请改用替代的构造函数。

SYSLIB0035

警告

SignerInfo.ComputeCounterSignature() 已过时。 请改用接受 CmsSigner 的重载。

禁止显示警告

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

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

// Disable the warning.

#pragma warning disable SYSLIB0001

// Code that uses obsolete API.

//...

// Re-enable the warning.

#pragma warning restore SYSLIB0001

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

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>

<TargetFramework>net5.0</TargetFramework>

<!-- NoWarn below suppresses SYSLIB0001 project-wide -->

<NoWarn>

上一篇:[洛谷] [CF1B] 坐标转换


下一篇:windows下MongoDb的配置和操作