この記事では、MSB3178診断コードについて説明します。
メッセージ テキスト
MSB3178: Assembly 'value' is incorrectly specified as a file.
説明
この警告は、MSBuild がマニフェスト ファイルを処理しようとしたときに、アセンブリに対して正しい XML 構造を使用するのではなく、通常のファイルとして指定されたアセンブリのようなファイルが検出された場合に発生します。 .NET アプリケーションの ClickOnce 配置で使用されるアセンブリ マニフェストは、アプリケーションの内容の XML エンコードを含む XML ファイルであり、アセンブリとファイルが含まれている可能性があります。 アセンブリは、 assembly 要素を使用して指定されます。これには、 assemblyInformationなどの子要素も含まれます。プレーン ファイルは、 file 要素を使用して指定されます。
Visual Studio で発行プロセスを使用して ClickOnce マニフェストを生成するときに、 Build Action が Content に設定された DLL または EXE を指定すると、この警告が表示されることがあります。 Visual Studio では、 Content とは、アセンブリとしてではなく、通常のファイルとして何かを追加することです。 プロジェクト ファイルでは、 Content は項目グループです。 項目グループにアセンブリのようなファイルが含まれている場合は、この警告が表示されます。
解決策
エラー メッセージのテキストで指定されたアセンブリのアセンブリ マニフェスト XML ファイルを確認します。 詳細については、「 アセンブリ マニフェスト」を参照してください。 バイナリ ログを生成して、特定のファイルがアセンブリとして渡されている理由を確認できます。 MSBuild コマンド ラインで -bl スイッチを使用し、 MSBuild 構造化ログ ビューアー を使用してバイナリ ログ (.binlog ファイル) を開きます。
プロジェクト ファイルにアイテム グループ Contentが含まれている場合、または Visual Studio プロジェクトで DLL または EXE 拡張子を持つ一部のファイルのBuild ActionとしてContentが指定されている場合は、これが意図的かどうかを検討してください。
マニフェスト ファイルがカスタム ツールまたはプロセスによって生成された場合は、 file 要素のいずれかを調べて、代わりにアセンブリとして参照する必要があるファイルを参照しているかどうかを確認します ( .dll や .exeなどのファイル拡張子を探します)。 ツールまたは MSBuild タスクによって生成された場合は、コマンド ライン構文、シェル展開を確認し、ツールまたはタスクへの入力ファイルを検証します。
この警告は、 NoWarn プロパティを使用して無効にすることができます。
<NoWarn>$(NoWarn);MSB3178</NoWarn>
通常のファイルとしてアセンブリと思われるものを含めるのが有効で意図的なシナリオであることを確認した場合にのみ、警告を無効にする必要があります。
対象
MSBuild のすべてのバージョン