Skip to main content

C# コンパイラの予期せぬ失敗

MSBuild C# のコンパイルが予期せず失敗した場合は、アプリケーション プロジェクト ファイルの修正が必要になることがあります。

これらのエラーについて

CodeQL トレーサーは、C# コンパイラの呼び出しにいくつかのフラグを挿入し、すべてのコンポーネントが CodeQL データベースに確実に組み込まれるようにします。これにより、C# コードが CodeQL 分析時に予想される内容とは異なる方法でビルドされる可能性があります。 「コンパイル済み言語の CodeQL コード スキャン」を参照してください。

/p:EmitCompilerGeneratedFiles=true は挿入されたプロパティの 1 つであり、ビルド プロセス中にコンパイラによって生成されたファイルを出力します。 このオプションにより、正規表現のサポートの強化、シリアル化、Web アプリケーション ビューの作成などの機能のサポートに使用される追加のファイルがコンパイラにより生成されます。 これらの生成されたアーティファクトは、通常、コンパイラによってディスクに書き込まれるのではなく、オプションを true に設定すると、強制的にファイルがディスクに書き込まれるので、エクストラクターがファイルを処理できます。

一部のレガシ プロジェクトや、.sqlproj ファイルを使用するプロジェクトでは、挿入された /p:EmitCompilerGeneratedFiles=true プロパティによって、msbuild で予期しない問題が発生する場合があります。

問題の原因の確認

[treat warnings as errors] (警告をエラーとして扱う) フラグを設定した場合、msbuild によりエラーが生成され、抽出は失敗します。

問題を修正する

<CompilerGeneratedFilesOutputPath> 要素をアプリケーションのプロジェクト ファイルに追加する必要があります。 詳細については、Microsoft Learn の「プロジェクト ファイルについて理解する」を参照してください。