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

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

更改描述

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

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

诊断标识符 DESCRIPTION 严重程度
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.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

另请参阅