次の方法で共有


.NET 6 以降でのソース ジェネレーター診断

.NET 6 以降のプロジェクトで、ログ ソリューションなど、コードのソース生成を可能にするパッケージを参照している場合は、ソース生成に固有のアナライザーがコンパイル時に実行されます。 この記事では、ソース生成コードに関連するコンパイラ診断の一覧を示します。

これらのビルドの警告またはエラーのいずれかが発生した場合は、「リファレンス」セクションに一覧表示されている診断 ID に対して提供されている特定のガイダンスに従ってください。 特定の SYSLIB1XXX 診断 ID 値を使用して警告を抑制することもできます。 詳細については、「警告を表示しない」を参照してください。

アナライザーの警告

ソース生成コード アナライザーの警告用に予約されている診断 ID 値は、SYSLIB1001 から SYSLIB1999 です。

リファレンス

次の表に、.NET 6 以降のバージョンの SYSLIB1XXX 診断のインデックスを示します。

診断 ID Description
SYSLIB1001 ログ メソッド名の先頭を _ にすることはできません
SYSLIB1002 ログ メッセージにログ レベル パラメーターをテンプレートとして含めません
SYSLIB1003 InvalidLoggingMethodParameterNameTitle
SYSLIB1004 ログ クラスを入れ子にされた型にすることはできません。
SYSLIB1005 必須の型定義が見つかりませんでした
SYSLIB1006 複数のログ メソッドでは、1 つのクラス内で同じイベント ID を使用することはできません
SYSLIB1007 ログ メソッドでは void を返す必要があります
SYSLIB1008 ログ メソッドへの引数の 1 つで、Microsoft.Extensions.Logging.ILogger インターフェイスを実装する必要があります
SYSLIB1009 ログ メソッドは static である必要があります
SYSLIB1010 ログ メソッドは partial である必要があります
SYSLIB1011 ログ メソッドをジェネリックにすることはできません
SYSLIB1012 ログ メッセージ内の修飾子が冗長です
SYSLIB1013 ログ メッセージに例外パラメーターをテンプレートとして含めません
SYSLIB1014 ログ テンプレートに対応するメソッド引数がありません
SYSLIB1015 引数がログ メッセージから参照されていません
SYSLIB1016 ログ メソッドに本文を含めることはできません
SYSLIB1017 LogLevel 値は、LoggerMessage 属性で、またはログ メソッドのパラメーターとして指定する必要があります
SYSLIB1018 ログ メッセージにロガー パラメーターをテンプレートとして含めません
SYSLIB1019 Microsoft.Extensions.Logging.ILogger 型のフィールドが見つかりませんでした
SYSLIB1020 Microsoft.Extensions.Logging.ILogger 型のフィールドが複数見つかりました
SYSLIB1021 複数のメッセージ テンプレート項目名で大文字と小文字のみが異なっています
SYSLIB1022 形式に誤りがある (たとえば、中かっこが残っている) 書式指定文字列を含めることはできません
SYSLIB1023 6 個を超える引数の生成はサポートされていません
SYSLIB1024 ログ メソッド引数で、サポートされていない out パラメーター修飾子が使用されています
SYSLIB1025 複数のログ メソッドが 1 つのクラス内で同じイベント ID を使用することはできません
SYSLIB1026 ログ ソース ジェネレーターでサポートされていない C# 言語バージョン。
SYSLIB1027 Microsoft.Extensions.Logging.ILogger 型のプライマリ コンストラクター パラメーターがフィールドによって非表示になっている
SYSLIB1028 (ログ記録用に予約されています。)
SYSLIB1029 (ログ記録用に予約されています。)
SYSLIB1030 System.Text.Json ソース ジェネレーターでは、型のシリアル化メタデータが生成されませんでした
SYSLIB1031 System.Text.Json ソース ジェネレーターで重複する JsonTypeInfo プロパティ名が検出されました
SYSLIB1032 System.Text.Json ソース ジェネレーターで、部分的ではないコンテキスト クラスが検出されました
SYSLIB1033 System.Text.Json ソース ジェネレーターで、複数の [JsonConstructor] 注釈を持つ型が検出されました
SYSLIB1034 JsonSourceGenerator で JsonStringEnumConverter 注釈が見つかりました
SYSLIB1035 System.Text.Json ソース ジェネレーターで、複数の [JsonExtensionData] 注釈を持つ型が検出されました
SYSLIB1036 System.Text.Json ソース ジェネレーターで、無効な [JsonExtensionData] 注釈が検出されました
SYSLIB1037 System.Text.Jsonソース ジェネレーターで、逆シリアル化がサポートされていない init 専用プロパティを持つ型が検出されました
SYSLIB1038 System.Text.Json ソース ジェネレーターで、アクセスできないアクセサーを持つ、[JsonInclude] で 注釈が付けられているプロパティが検出されました
SYSLIB1039 JsonSourceGenerator で、JsonSourceGenerationMode.Serialization が有効になっている JsonDerivedTypeAttribute 注釈が見つかりました
SYSLIB1040 GeneratedRegexAttribute の使用が無効です。
SYSLIB1041 複数の GeneratedRegexAttribute 属性が同じメソッドに適用されましたが、1 つしか許可されません。
SYSLIB1042 指定された正規表現は無効です。
SYSLIB1043 GeneratedRegexAttribute メソッドは、部分、パラメーターなし、非ジェネリック、非抽象でなければならず、Regex を返す必要があります。
SYSLIB1044 内部制限により、正規表現ジェネレーターは指定された正規表現の完全なソース実装を生成できませんでした。 詳細については、生成されたソースの説明を参照してください。
SYSLIB1045 GeneratedRegexAttribute を使用して、コンパイル時に正規表現の実装を生成します。
SYSLIB1046 (System.Text.RegularExpressions.Generator 用に予約されています。)
SYSLIB1047 (System.Text.RegularExpressions.Generator 用に予約されています。)
SYSLIB1048 (System.Text.RegularExpressions.Generator 用に予約されています。)
SYSLIB1049 (System.Text.RegularExpressions.Generator 用に予約されています。)
SYSLIB1050 LibraryImportAttribute の使用が無効です。
SYSLIB1051 指定された型は、ソースで生成された p/invoke ではサポートされていません。
SYSLIB1052 指定された構成は、ソースで生成された p/invoke ではサポートされていません。
SYSLIB1053 指定された LibraryImportAttribute 引数を DllImportAttribute に転送することができません。
SYSLIB1054 DllImportAttribute の代わりに LibraryImportAttribute を使用して、コンパイル時に p/invoke マーシャリング コードを生成します。
SYSLIB1055 CustomMarshallerAttribute の使用が無効です。
SYSLIB1056 指定されたネイティブ型は無効です。
SYSLIB1057 マーシャラー型に必要な図形がありません。
SYSLIB1058 NativeMarshallingAttribute の使用が無効です。
SYSLIB1059 マーシャラー型ではコンストラクターの割り当てがサポートされていません。
SYSLIB1060 指定されたマーシャラー型は無効です。
SYSLIB1061 マーシャラー型に互換性のないメソッド シグネチャがあります。
SYSLIB1062 プロジェクトは <AllowUnsafeBlocks>true</AllowUnsafeBlocks> で更新する必要があります。
SYSLIB1063 (Microsoft.Interop.LibraryImportGenerator 用に予約されています。)
SYSLIB1064 (Microsoft.Interop.LibraryImportGenerator 用に予約されています。)
SYSLIB1065 (Microsoft.Interop.LibraryImportGenerator 用に予約されています。)
SYSLIB1066 (Microsoft.Interop.LibraryImportGenerator 用に予約されています。)
SYSLIB1067 (Microsoft.Interop.LibraryImportGenerator 用に予約されています。)
SYSLIB1068 (Microsoft.Interop.LibraryImportGenerator 用に予約されています。)
SYSLIB1069 (Microsoft.Interop.LibraryImportGenerator 用に予約されています。)
SYSLIB1070 JSImportAttribute の使用が無効です。
SYSLIB1071 JSExportAttribute の使用が無効です。
SYSLIB1072 指定された型は、ソースで生成された JavaScript 相互運用ではサポートされていません。
SYSLIB1073 指定された構成型は、ソースで生成された JavaScript 相互運用ではサポートされていません。
SYSLIB1074 JSImportAttribute にはアンセーフ コードが必要です。
SYSLIB1075 JSImportAttribute にはアンセーフ コードが必要です。
SYSLIB1076 (System.Runtime.InteropServices.JavaScript.JSImportGenerator 用に予約されています。)
SYSLIB1077 (System.Runtime.InteropServices.JavaScript.JSImportGenerator 用に予約されています。)
SYSLIB1078 (System.Runtime.InteropServices.JavaScript.JSImportGenerator 用に予約されています。)
SYSLIB1079 (System.Runtime.InteropServices.JavaScript.JSImportGenerator 用に予約されています。)
SYSLIB1080 (System.Runtime.InteropServices.JavaScript.JSImportGenerator 用に予約されています。)
SYSLIB1081 (System.Runtime.InteropServices.JavaScript.JSImportGenerator 用に予約されています。)
SYSLIB1082 (System.Runtime.InteropServices.JavaScript.JSImportGenerator 用に予約されています。)
SYSLIB1083 (System.Runtime.InteropServices.JavaScript.JSImportGenerator 用に予約されています。)
SYSLIB1084 (System.Runtime.InteropServices.JavaScript.JSImportGenerator 用に予約されています。)
SYSLIB1085 (System.Runtime.InteropServices.JavaScript.JSImportGenerator 用に予約されています。)
SYSLIB1086 (System.Runtime.InteropServices.JavaScript.JSImportGenerator 用に予約されています。)
SYSLIB1087 (System.Runtime.InteropServices.JavaScript.JSImportGenerator 用に予約されています。)
SYSLIB1088 (System.Runtime.InteropServices.JavaScript.JSImportGenerator 用に予約されています。)
SYSLIB1089 (System.Runtime.InteropServices.JavaScript.JSImportGenerator 用に予約されています。)
SYSLIB1090 GeneratedComInterfaceAttribute の使用が無効です。
SYSLIB1091 メソッドは、GeneratedComInterface 属性とは異なる部分宣言で宣言されます。
SYSLIB1092 LibraryImport または GeneratedComInterface 属性の使用は推奨事項に従っていません。
SYSLIB1093 COM インターフェイス生成の分析に失敗しました。
SYSLIB1094 ベース COM インターフェイスでソースの生成に失敗しました。 このインターフェイスのコードは生成されません。
SYSLIB1095 GeneratedComClassAttribute の使用が無効です。
SYSLIB1096 ComImportAttribute の代わりに GeneratedComInterfaceAttribute を使用して、コンパイル時に COM マーシャリング コードを生成します。
SYSLIB1097 この型では、GeneratedComInterfaceAttribute 属性を持つ少なくとも 1 つの型が実装されます。 この型を COM に渡し、この型のオブジェクトから GeneratedComInterfaceAttribute の型の COM インターフェイスを公開できるようにするには、GeneratedComClassAttribute を追加します。
SYSLIB1098 EnableComHosting を使用した .NET COM ホスティングでは、組み込みの COM 相互運用のみがサポートされます。 GeneratedComInterfaceAttribute とのソース生成 COM 相互運用はサポートされていません。
SYSLIB1099 System.Runtime.InteropServices.Marshal の COM 相互運用 API ではソース生成 COM がサポートされていないため、実行時に失敗します。
SYSLIB1100 構成バインド ジェネレーター: 型はサポートされていません。
SYSLIB1101 構成バインド ジェネレーター: 型のプロパティはサポートされていません。
SYSLIB1102 構成バインド ジェネレーター: プロジェクトの言語バージョンは、少なくとも C# 12 である必要があります。
SYSLIB1103 構成バインド ジェネレーター: 値の型は、構成 'Bind' メソッドへの無効な入力です。
SYSLIB1104 構成バインド ジェネレーター: ジェネレーターでターゲット構成の種類を特定できません。
SYSLIB1105 (Microsoft.Extensions.Configuration.Binder.SourceGeneration 用に予約されています。)
SYSLIB1106 (Microsoft.Extensions.Configuration.Binder.SourceGeneration 用に予約されています。)
SYSLIB1107 (Microsoft.Extensions.Configuration.Binder.SourceGeneration 用に予約されています。)
SYSLIB1108 (Microsoft.Extensions.Configuration.Binder.SourceGeneration 用に予約されています。)
SYSLIB1109 (Microsoft.Extensions.Configuration.Binder.SourceGeneration 用に予約されています。)
SYSLIB1110 (Microsoft.Extensions.Configuration.Binder.SourceGeneration 用に予約されています。)
SYSLIB1111 (Microsoft.Extensions.Configuration.Binder.SourceGeneration 用に予約されています。)
SYSLIB1112 (Microsoft.Extensions.Configuration.Binder.SourceGeneration 用に予約されています。)
SYSLIB1113 (Microsoft.Extensions.Configuration.Binder.SourceGeneration 用に予約されています。)
SYSLIB1114 (Microsoft.Extensions.Configuration.Binder.SourceGeneration 用に予約されています。)
SYSLIB1115 (Microsoft.Extensions.Configuration.Binder.SourceGeneration 用に予約されています。)
SYSLIB1116 (Microsoft.Extensions.Configuration.Binder.SourceGeneration 用に予約されています。)
SYSLIB1117 (Microsoft.Extensions.Configuration.Binder.SourceGeneration 用に予約されています。)
SYSLIB1118 (Microsoft.Extensions.Configuration.Binder.SourceGeneration 用に予約されています。)
SYSLIB1201 ValidateObjectMembersAttributeValidateEnumeratedItemsAttribute はオープン ジェネリック型のフィールドやプロパティで使用できません。
SYSLIB1202 メンバー型には、検証するフィールドもプロパティもありません。
SYSLIB1203 型には、検証するフィールドもプロパティもありません。
SYSLIB1204 OptionsValidatorAttribute という注釈が付けられた型は、必要なインターフェイスを実装しません。
SYSLIB1205 型には、'Validate' メソッドの実装が既に含まれています。
SYSLIB1206 プライベートのフィールドまたはプロパティを検証できません。
SYSLIB1207 メンバー型は列挙できません。
SYSLIB1208 推移的または列挙可能な検証に使用される検証コントロールには、パラメーターのないコンストラクターを与える必要があります。
SYSLIB1209 OptionsValidatorAttribute は静的クラスに適用できません。
SYSLIB1210 ValidateObjectMembersAttribute または ValidateEnumeratedItemsAttribute 属性に指定されている null 検証コントロール型。
SYSLIB1211 モデル型でサポートされていない循環参照。
SYSLIB1212 推移的な検証が不足している可能性があるメンバー。
SYSLIB1213 列挙可能な検証が不足している可能性があるメンバー。
SYSLIB1214 定数、静的フィールド、プロパティを検証できません。
SYSLIB1215 メンバーの検証属性は、検証コントロール型からアクセスできません。
SYSLIB1216 オプション検証ソース ジェネレーターではサポートされていない C# 言語バージョン。
SYSLIB1217 検証属性は、文字列型、配列型、ICollection 型のプロパティにのみ適用されます。その他の型では使用できません。
SYSLIB1218 (Microsoft.Extensions.Options.SourceGeneration のために予約されています)
SYSLIB1219 (Microsoft.Extensions.Options.SourceGeneration のために予約されています)
SYSLIB1220 JsonSourceGenerator で、無効な型引数を持つ [JsonConverterAttribute] が検出されました。
SYSLIB1221 JsonSourceGenerator では、この C# 言語バージョンはサポートされていません。
SYSLIB1222 JsonConstructorAttribute で注釈が付けられたコンストラクターにアクセスできません。
SYSLIB1223 JsonConstructorAttribute で注釈が付けられたコンストラクターにアクセスできません。
SYSLIB1224 JsonSerializableAttribute で注釈が付けられた型は、JsonSerializerContext から派生するクラスである必要があります。
SYSLIB1225 (System.Text.Json.SourceGeneration 用に予約されています。)
SYSLIB1226 (System.Text.Json.SourceGeneration 用に予約されています。)
SYSLIB1227 (System.Text.Json.SourceGeneration 用に予約されています。)
SYSLIB1228 (System.Text.Json.SourceGeneration 用に予約されています。)
SYSLIB1229 (System.Text.Json.SourceGeneration 用に予約されています。)

警告を表示しない

可能な場合は、回避策の 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>