49

msbuild を使用して Visual Studio ソリューション ファイルをビルドしようとしていました。ソリューションを構築するために次のコマンドラインを使用しました

msbuild.exe SolutionFile.sln /t:Build/p:Configuration=Release;Platform=Win32

ある時点でビルドが開始されても、ビルドがハングしているように見え、以下に示すように先に進むことができません

Done Building Project "D:\SolutionPath\ProjectFile10.vcxproj" (default targets).

私が構築しなければならないものの.proj下にたくさんあります。SolutionFile.sln

msbuild.exeではなく使用する必要がありますdevenv.com

4

2 に答える 2

35

msbuild 内で何が起こっているかを診断するための手法があり、ここで何が起こっているかを理解するのに役立ちます。コマンド プロンプトから環境変数を設定します。

set msbuildemitsolution=1

msbuild を実行すると、.metaprojファイルが生成されます。このファイルは、msbuild が内部で使用するものですが、その後削除します。それを読んで、実際のターゲットの名前を確認できます。ターゲットが展開されて、Build実際に何を呼び出しているかが表示されます。次に、msbuildのフラグを使用して個々のターゲットをビルドし、/tどのターゲットが問題を引き起こしているかを調べることができます。

于 2013-01-02T10:30:09.667 に答える
29

詳細プロパティを診断に設定し、出力をファイルに保存します。これは、ソリューション内のどのプロジェクトがハングしているかを特定し、問題を診断するのに役立ちます。

出力を MyProjectOutput.log という名前のファイルに保存するためのコマンド ライン構文は次のようになります。

msbuild SolutionFile.sln /t:build /fl /flp:logfile=MyProjectOutput.log;verbosity=diagnostic

また、リストしたコマンドで渡されたパラメーターをビルドするための /t ターゲットの後にスペースが必要であるようにも見えます。

msbuild.exe SolutionFile.sln /t:Build /p:Configuration=Release;Platform=Win32

また、すべてのプロジェクトに "Release" および "Win32" 構成が含まれていますか? 以下のコマンドを実行して、何がコンパイルされるかを確認することもできます。msbuild は、既定のターゲットと必要な構成を自動的に実行します。

msbuild SolutionFile.sln

試すことができる別のオプションは、プロジェクトをコンパイルして、何が生成されるかを確認することです。

msbuild "D:\SolutionPath\ProjectFile10.vcxproj" /fl /flp:logfile=MyProjectOutput.log;verbosity=diagnostic
于 2013-01-02T15:48:02.450 に答える