使用 LoggerMessageAttribute 进行注释的方法的参数之一必须是 ILogger 类型或实现 ILogger 的类型。
使用 LoggerMessageAttribute 进行注释的方法的名称以下划线字符开头。 不允许这种做法,因为这可能会导致符号名称与自动生成的代码相冲突。
使用 LoggerMessageAttribute 进行注释的多个方法正在使用相同的事件 ID 值。 事件 ID 值在每个程序集的范围内必须独一无二。
类型名与具有一个或多个外部可见类型的被引用命名空间名称冲突。 名称比较不区分大小写。
按照约定,标识符名称不包含下划线 (_) 字符。 该规则将检查命名空间、类型、成员和参数。
建议尽量使用解决方法之一。 但是,如果无法更改代码,可以通过 #pragma 指令或 <NoWarn> 项目设置来禁止显示警告。 如果 SYSLIB1XXX 源生成器诊断未显示为错误,则可以在代码或项目文件中禁止警告。
使用 LoggerMessageAttribute 属性进行注释的方法返回了一个值。
从 .NET 5 开始,以下 API 标记为已过时。 在代码中使用这些 API 会在编译时生成警告 SYSLIB0012。
从 .NET 6 开始,CmsSigner(CspParameters) 构造函数标记为已过时。 在代码中使用此 API 会在编译时生成警告 SYSLIB0034。
从 .NET 6 开始,Rijndael 和 RijndaelManaged 类型标记为已过时。 在代码中使用这些 API 会在编译时生成警告 SYSLIB0022。
从 .NET 6 开始,RNGCryptoServiceProvider 标记为已过时。 在代码中使用会在编译时生成警告 SYSLIB0023。
LoggerMessageAttribute 属性的消息字符串包含一个前缀(例如 INFO: 或 ERROR:),这是多余的,因为每个日志消息都有相应的日志级别。
从 .NET 6 开始,将以下 API 标记为已过时。 在代码中使用这些 API 会在编译时生成警告 SYSLIB0019。
从 .NET 5 开始,以下 API 标记为已过时。 使用这些 API 会在编译时生成警告 SYSLIB0009,并在运行时引发 PlatformNotSupportedException。
使用 LoggerMessageAttribute 进行注释的方法未标记为分部方法。
使用 LoggerMessageAttribute 进行注释的方法包含泛型类型的参数。
从 .NET 6 开始,System.Runtime.CompilerServices.DisablePrivateReflectionAttribute 类型标记为已过时。 此属性在 .NET Core 2.1 和更高版本应用程序中不起作用。 对于 .NET 6 和更高版本的应用程序,在代码中使用会在编译时生成警告 SYSLIB0015。
从 .NET 6 开始,以下方法标记为已过时。 在代码中调用这些方法会在编译时生成警告 SYSLIB0018。 这些方法在运行时引发 PlatformNotSupportedException。
不支持从进程状态已损坏异常中恢复。从 .NET 6 开始,HandleProcessCorruptedStateExceptionsAttribute 类型标记为已过时。 在代码中使用此 API 会在编译时生成警告 SYSLIB0032。
从 .NET 6 开始,SignerInfo.ComputeCounterSignature() 方法标记为已过时。 在代码中使用此 API 会在编译时生成警告 SYSLIB0035。
从 .NET 5 开始,DebugInfoGenerator.CreatePdbGenerator() API 标记为已过时。 使用此 API 将在编译时生成警告 SYSLIB0008,并在运行时引发 PlatformNotSupportedException。
日志记录方法的第一个日志级别参数在日志记录消息中作为模板引用。 不必要这样做,因为第一个日志级别会显式传递给日志记录基础结构。 不需要在日志记录消息中重复它。
日志记录方法的第一个异常参数在日志记录消息中作为模板引用。 不必要这样做,因为第一个异常将显式传递给日志记录基础结构。 不需要在日志记录消息中重复它。
从 .NET 5 开始,以下 API 标记为已过时。 使用这些 API 会在编译时生成警告 SYSLIB0006,并在运行时生成 PlatformNotSupportedException。
从 .NET 6 开始,Rfc2898DeriveBytes.CryptDeriveKey(String, String, Int32, Byte[]) 方法标记为已过时。 在代码中使用此 API 会在编译时生成警告 SYSLIB0033。
从 .NET 6 开始,以下 API 标记为已过时。 在代码中使用这些 API 会在编译时生成警告 SYSLIB0017。 这些 API 在运行时引发 PlatformNotSupportedException。
从 .NET 6 开始,JsonSerializerOptions.IgnoreNullValues 属性标记为已过时。 在代码中使用会在编译时生成警告 SYSLIB0020。
从 .NET 6 开始,AppDomain.CreateDomain(String) 和 AppDomain.Unload(AppDomain) 方法标记为已过时。 在代码中使用这些方法会在编译时生成警告 SYSLIB0024,并在运行时引发异常。
从 .NET 6 开始,SuppressIldasmAttribute 类型标记为已过时。 在代码中使用会在编译时生成警告 SYSLIB0025。 IL 反汇编程序 (ildasm.exe) 不再支持此属性。
从 .NET 6 开始,PublicKey.Key 属性标记为已过时。 在代码中使用此 API 会在编译时生成警告 SYSLIB0027。
从 .NET 6 开始,将以下 API 标记为已过时。 在代码中使用这些 API 会在编译时生成警告 SYSLIB0014。
从 .NET 6 开始,将不带参数的 Graphics.GetContextInfo() 方法标记为已过时。 在代码中使用会在编译时生成警告 SYSLIB0016。
从 .NET 6 开始,X509Certificate2.PrivateKey 属性标记为已过时。 在代码中使用此 API 会在编译时生成警告 SYSLIB0028。
从 .NET 5 开始,PrincipalPermissionAttribute 构造函数已过时并生成编译时错误 SYSLIB0002。 不能实例化此属性或将其应用于方法。
从 .NET 6 开始,Uri.EscapeUriString(String) API 标记为已过时。 在代码中使用会在编译时生成警告 SYSLIB0013。
.NET Core 和 .NET 5 及更高版本消除了 .NET Framework 中存在的全局程序集缓存 (GAC) 这一概念。 为帮助开发人员摒弃这些 API,从 .NET 5 开始,一些 GAC 相关的 API 标记为已过时。 使用这些 API 会在编译时生成警告 SYSLIB0005。
对于引用类型,相等运算符的默认实现几乎始终是正确的。 默认情况下,仅当两个引用指向同一对象时,它们才相等。
.NET 远程处理是一项传统技术,基础结构仅存在于 .NET Framework 中。 从 .NET 5 开始,以下与远程处理相关的 API 标记为已过时。 在代码中使用这些方法会在编译时生成警告 SYSLIB0010,并在运行时引发 PlatformNotSupportedException。
由于 BinaryFormatter 存在安全漏洞,从 .NET 5.开始,以下 API 标记为已过时。 在代码中使用这些 API 会在编译时生成警告 SYSLIB0011。
未密封的外部可见类型提供了显式实现公共接口的方法,但没有提供具有相同名称的其他外部可见方法。
知晓程序员,专注微信小程序开发的程序员! 一、判断小程序版本号 小程序的API是不断更新的,你可能使用某个API时,文档里会说明,此API在1.x.x版本开始支持,需要自己做兼容处理。 如果你使用小程序版本号做兼容,就必须了解小程序的基础库版本号规则,在这里介绍一下。 小程序基础库版本号使用 semver 规范,格式为 Major.Minor.Patch,Major、Minor、Patch 均为整数,1.9.901、2.44.322、10.32.44 都是符合 semver 风格的版本号。 以下是官方提供
从 .NET 6 开始,以下可变 x509 证书 API 将标记为已过时。 在代码中使用这些 API 会在编译时生成警告 SYSLIB0026。
.NET 使用版本号来唯一标识程序集,并绑定到强名称程序集中的类型。 版本号与版本和发行者策略一起使用。 默认情况下,仅使用用于生成应用程序的程序集版本运行应用程序。
应在命名空间内声明类型以避免名称冲突,并作为一种在对象层次结构中组织相关类型的方式。 任何命名的命名称空间之外的类型均位于无法在代码中引用的全局命名空间中。
UTF-7 编码在应用程序中不再广泛使用,并且许多规范现在在交换中禁止其使用。 它偶尔还会在不期望遇到 UTF-7 编码数据的应用程序中用作攻击途径。 Microsoft 警告不要使用 System.Text.UTF7Encoding,因为它不提供错误检测。
抽象类型的构造函数只能由派生类型调用。 由于公共构造函数可创建类型的实例,但无法创建抽象类型的实例,因此具有公共构造函数的抽象类型在设计上是错误的。
领取专属 10元无门槛券
手把手带您无忧上云