API 已过时并带有非默认诊断 ID (.NET 8)

从 .NET 8 开始,某些 API 标记为已过时。 此中断性变更特定于标记为已过时并带有自定义诊断 ID 的 API。 取消默认过时诊断 ID(对于 C# 编译器,即为 CS0618),不会取消使用这些 API 时编译器生成的警告。

更改描述

在以前的 .NET 版本中,可以使用这些 API,而不会引发任何生成警告。 在 .NET 8 及更高版本中,使用这些 API 会生成编译时警告或错误,并显示自定义诊断 ID。 使用自定义诊断 ID 可单独取消某个过时警告,而不是取消所有过时警告。

下表列出了已过时 API 的自定义诊断 ID 及其相应的警告消息。

诊断 ID 说明 严重性
SYSLIB0011 BinaryFormatter 序列化已过时 警告/错误
SYSLIB0048 RSA.EncryptValue(Byte[])RSA.DecryptValue(Byte[]) 已过时。 请改用 RSA.EncryptRSA.Decrypt 警告
SYSLIB0049 JsonSerializerOptions.AddContext 已过时。 若要注册 JsonSerializerContext,请使用 TypeInfoResolver 或 TypeInfoResolverChain 属性。 警告
SYSLIB0050 基于格式化程序的序列化已过时,不应使用。 警告
SYSLIB0051 支持过时的基于格式化程序的序列化的 API 已过时。 应用程序代码不应调用或扩展它们。 警告
SYSLIB0052 支持 Regex 扩展性过时机制的 API 已过时。 警告
SYSLIB0053 AesGcm 应指示加密和解密所需的标记大小。 使用接受标记大小的构造函数。 警告

引入的版本

.NET 8

中断性变更的类型

这种过时可能会影响源兼容性

  • 使用警告中提供的 URL 链接,遵循为每个诊断 ID 提供的特定指南。

  • 不能使用过时类型或成员的标准诊断 ID 取消有关这些过时类型或成员的警告或错误;请改用自定义 SYSLIBxxxx 诊断 ID 值。

受影响的 API

SYSLIB0011

SYSLIB0048

SYSLIB0049

SYSLIB0050

SYSLIB0051

过时的 SYSLIB0051 API 在此处按命名空间进行组织。

Microsoft.CSharp.RuntimeBinder 命名空间

Microsoft.VisualBasic.FileIO 命名空间

系统命名空间

System.Collections 命名空间

System.Collections.Generic 命名空间

System.Collections.Specialized 命名空间

System.ComponentModel 命名空间

System.ComponentModel.Composition 命名空间

System.ComponentModel.Composition.Primitives 命名空间

System.ComponentModel.DataAnnotations 命名空间

System.ComponentModel.Design 命名空间

System.Configuration 命名空间

System.Data 命名空间

System.Data.Common 命名空间

System.Data.Odbc 命名空间

System.Data.OleDb 命名空间

System.Data.SqlTypes 命名空间

System.Diagnostics.Eventing.Reader 命名空间

System.Diagnostics.Tracing 命名空间

System.DirectoryServices 命名空间

System.DirectoryServices.AccountManagement 命名空间

System.DirectoryServices.ActiveDirectory 命名空间

System.DirectoryServices.Protocols 命名空间

System.Formats.Asn1 命名空间

System.Formats.Cbor 命名空间

System.Globalization 命名空间

System.IO 命名空间

System.Management 命名空间

System.Media 命名空间

System.Net 命名空间

System.Net.Mail 命名空间

System.Net.NetworkInformation 命名空间

System.Net.Sockets 命名空间

System.Reflection 命名空间

System.Reflection.Metadata 命名空间

System.Resources 命名空间

System.Runtime.CompilerServices 命名空间

System.Runtime.InteropServices 命名空间

System.Runtime.Serialization 命名空间

System.Security 命名空间

System.Security.AccessControl 命名空间

System.Security.Authentication 命名空间

System.Security.Claims 命名空间

System.Security.Cryptography 命名空间

System.Security.Policy 命名空间

System.Security.Principal 命名空间

System.Text.Json 命名空间

System.Text.RegularExpressions 命名空间

System.Threading 命名空间

System.Threading.Channels 命名空间

System.Threading.Tasks 命名空间

System.Transactions 命名空间

System.Xml 命名空间

System.Xml.Schema 命名空间

System.Xml.XPath 命名空间

System.Xml.Xsl 命名空间

SYSLIB0052

SYSLIB0053

请参阅