API 已过时并带有非默认诊断 ID

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

更改描述

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

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

诊断 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.AuthenticateAuthenticationManager.PreAuthenticate 方法都不受支持并会引发 PlatformNotSupportedException 警告
SYSLIB0010 某些远程处理 API 不受支持并会引发 PlatformNotSupportedException 警告
SYSLIB0011 BinaryFormatter 序列化已过时,不应使用。 警告
SYSLIB0012 包含 Assembly.CodeBaseAssembly.EscapedCodeBase 只是为了实现 .NET Framework 兼容性。 请改用 Assembly.Location 警告

引入的版本

.NET 5.0

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

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

受影响的 API

SYSLIB0001

SYSLIB0002

SYSLIB0003

System.Security.Permissions 命名空间中的类:

派生自 CodeAccessSecurityAttribute 的类:

接口:

实现 IStackWalk 的类:

实现 IPermission 的类:

派生自 CodeAccessPermission 的类:

派生自 ResourcePermissionBase 的类:

System.Security.Permissions 命名空间中的枚举:

依赖于代码访问安全类型的类和成员:

SYSLIB0004

SYSLIB0005

SYSLIB0006

SYSLIB0007

SYSLIB0008

SYSLIB0009

SYSLIB0010

SYSLIB0011

SYSLIB0012

请参阅