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
を使用する必要があります
Msbuild内で何が起こっているかを診断する手法があり、ここで何が起こっているかを把握するのに役立ちます。コマンドプロンプトから環境変数を設定します。
set msbuildemitsolution=1
Msbuildを実行すると、.metaproj
ファイルが生成されます。このファイルはmsbuildが内部的に使用するものですが、その後削除されます。これを読んで、実際のターゲットの名前を確認できます。 Build
ターゲットは、実際に呼び出されるものを表示するために展開されます。次に、msbuildの/t
フラグを使用して個々のターゲットをビルドし、どのターゲットが問題を引き起こしているかを調べることができます。
詳細プロパティを診断に設定し、出力をファイルに保存します。これは、ソリューション内のどのプロジェクトがハングしているかを判断し、問題を診断するのに役立ちます。
出力を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