RegEx ソース生成のための SYSLIB 診断

次の表は、.NET 7 以降のバージョンの正規表現ソース生成アナライザーの診断 ID を示しています。 SYSLIB1045 は、コンパイル時にソース生成を使用して正規表現エンジン実装を生成できる場所を自動的に警告します。 残りの診断は、ソース ジェネレーターの使用方法に関連するエラーについて警告します。

診断 ID 説明
SYSLIB1040 GeneratedRegexAttribute の使用が無効です。
SYSLIB1041 複数の GeneratedRegexAttribute 属性が同じメソッドに適用されましたが、1 つしか許可されません。
SYSLIB1042 指定された正規表現は無効です。
SYSLIB1043 GeneratedRegexAttribute メソッドは、部分、パラメーターなし、非ジェネリック、非抽象でなければならず、Regex を返す必要があります。
SYSLIB1044 内部制限により、正規表現ジェネレーターは指定された正規表現の完全なソース実装を生成できませんでした。 詳細については、生成されたソースの説明を参照してください。
SYSLIB1045 GeneratedRegexAttribute を使用して、コンパイル時に正規表現の実装を生成します。

正規表現のソース生成の詳細については、「.NET 正規表現ソース ジェネレーター」を参照してください。

警告を表示しない

可能な場合は、回避策の 1 つを使用することをお勧めします。 ただし、コードを変更できない場合、#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>

関連項目