针对正则表达式源生成的 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>

另请参阅