针对正则表达式源生成的 SYSLIB 诊断
下表显示 .NET 7 及更高版本中正则表达式源生成分析器的诊断 ID。 SYSLIB1045
会自动向你发出警报,提醒你在编译时可以使用源生成来生成正则表达式引擎实现。 其余诊断提醒你与使用源生成器相关的错误。
诊断 ID | 说明 |
---|---|
SYSLIB1040 |
GeneratedRegexAttribute 用法无效。 |
SYSLIB1041 |
对同一方法应用了多个 GeneratedRegexAttribute 属性,但只允许使用一个。 |
SYSLIB1042 |
指定的正则表达式无效。 |
SYSLIB1043 |
GeneratedRegexAttribute 方法必须是分部、无参数、非泛型且非抽象的方法,并且必须返回 Regex。 |
SYSLIB1044 |
由于内部限制,正则表达式生成器无法为指定的正则表达式生成完整的源实现。 有关更多详细信息,请参阅生成的源中的说明。 |
SYSLIB1045 |
使用 GeneratedRegexAttribute 在编译时生成正则表达式实现。 |
有关正则表达式的源生成的详细信息,请参阅 .NET 正则表达式源生成器。
禁止显示警告
建议尽量使用解决方法之一。 但是,如果无法更改代码,可以通过 #pragma
指令或 <NoWarn>
项目设置来禁止显示警告。 如果 SYSLIB1XXX
源生成器诊断未显示为错误,则可以在代码或项目文件中禁止警告。
若要禁止显示代码中的警告,请执行以下操作:
// Disable the warning.
#pragma warning disable SYSLIB1006
// Code that generates compiler diagnostic.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB1006
若要禁止显示项目文件中的警告,请执行以下操作:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<!-- NoWarn below suppresses SYSLIB1002 project-wide -->
<NoWarn>$(NoWarn);SYSLIB1002</NoWarn>
<!-- To suppress multiple warnings, you can use multiple NoWarn elements -->
<NoWarn>$(NoWarn);SYSLIB1002</NoWarn>
<NoWarn>$(NoWarn);SYSLIB1006</NoWarn>
<!-- Alternatively, you can suppress multiple warnings by using a semicolon-delimited list -->
<NoWarn>$(NoWarn);SYSLIB1002;SYSLIB1006;SYSLIB1007</NoWarn>
</PropertyGroup>
</Project>