如果你的 .NET 6 项目引用一个启用源生成代码的包(例如日志记录解决方案),则特定于源生成的分析器将在编译时运行。 本文列出了与源生成代码相关的编译器诊断。
如果你遇到其中一个生成警告或错误,请按照为参考部分列出的诊断 ID 提供的具体指导进行操作。 还可以使用特定的 SYSLIB1XXX 诊断 ID 值来取消警告。 有关详细信息,请参阅取消警告。
分析器警告
为源生成代码分析器警告保留的诊断 ID 值为 SYSLIB1001 至 SYSLIB1999。
参考
下表提供了 .NET 6 及更高版本中 SYSLIB1XXX 诊断的索引。
诊断 ID
说明
SYSLIB1001
日志记录方法名称不能以 _ 开头
SYSLIB1002
不要将日志级别参数作为模板包含在日志记录消息中
SYSLIB1003
InvalidLoggingMethodParameterNameTitle
SYSLIB1005
找不到所需的类型定义
SYSLIB1006
多个日志记录方法不能在类中使用相同的事件 ID
SYSLIB1007
日志记录方法必须返回 void
SYSLIB1008
日志记录方法的参数之一必须实现 Microsoft.Extensions.Logging.ILogger 接口
SYSLIB1009
日志记录方法必须为 static
SYSLIB1010
日志记录方法必须为 partial
SYSLIB1011
日志记录方法不能是泛型
SYSLIB1012
日志记录消息中的多余限定符
SYSLIB1013
不要将异常参数作为模板包含在日志记录消息中
SYSLIB1014
日志记录模板无相应的方法参数
SYSLIB1015
未从日志记录消息中引用参数
SYSLIB1016
日志记录方法不能有主体
SYSLIB1017
必须在 LoggerMessage 属性中提供 LogLevel 值或将其用作日志记录方法的参数
SYSLIB1018
不要将记录器参数作为模板包含在日志记录消息中
SYSLIB1019
找不到 Microsoft.Extensions.Logging.ILogger 类型的字段
SYSLIB1020
找到 Microsoft.Extensions.Logging.ILogger 类型的多个字段
SYSLIB1021
多个消息模板项名称只是大小写不同
SYSLIB1022
不能使用格式错误的格式字符串(例如不成对的大括号)
SYSLIB1023
不支持生成六个以上的参数
SYSLIB1030
System.Text.Json 源生成器未生成类型的序列化元数据
SYSLIB1031
System.Text.Json 源生成器遇到重复的 JsonTypeInfo 属性名称
SYSLIB1032
System.Text.Json 源生成器遇到非分部的上下文类
SYSLIB1033
System.Text.Json 源生成器遇到具有多个 [JsonConstructor] 注释的类型
SYSLIB1035
System.Text.Json 源生成器遇到具有多个 [JsonExtensionData] 注释的类型
SYSLIB1036
System.Text.Json 源生成器遇到无效的 [JsonExtensionData] 注释
SYSLIB1037
System.Text.Json 源生成器遇到具有仅初始化属性的类型,这些属性不支持反序列化
SYSLIB1038
System.Text.Json 源生成器遇到使用 [JsonInclude] 注释的属性,该属性具有不可访问的访问器
禁止显示警告
建议尽量使用解决方法之一。 但是,如果无法更改代码,可以通过 #pragma 指令或 <NoWarn> 项目设置来禁止显示警告。 如果 SYSLIB1XXX 源生成器诊断未显示为错误,则可以在代码或项目文件中禁止警告。
若要禁止显示代码中的警告,请执行以下操作:
代码语言:javascript复制// Disable the warning.
#pragma warning disable SYSLIB1006
// Code that generates compiler diagnostic.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB1006
若要禁止显示项目文件中的警告,请执行以下操作:
代码语言:javascript复制<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<!-- NoWarn below suppresses SYSLIB1002 project-wide -->
<NoWarn>