web-dev-qa-db-ja.com

msbuildを使用してソリューションファイルを作成する

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を使用する必要があります

42
TVSuser1654136

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

set msbuildemitsolution=1

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

32
the_mandrill

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

出力を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

また、すべてのプロジェクトに「リリース」および「Win32」構成が含まれていることを確認してください。以下のコマンドも実行してみて、何がコンパイルされるかを確認できます。 Msbuildは、必要なデフォルトのターゲットと構成を自動的に実行します。

msbuild SolutionFile.sln

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

msbuild "D:\SolutionPath\ProjectFile10.vcxproj" /fl /flp:logfile=MyProjectOutput.log;verbosity=diagnostic
25