Ich wollte gerade eine Visual Studio-Lösungsdatei mit msbuild erstellen. Ich habe die folgende Befehlszeile zum Erstellen der Lösung verwendet
msbuild.exe SolutionFile.sln /t:Build/p:Configuration=Release;Platform=Win32
Obwohl der Build irgendwann startet, scheint er hängen zu bleiben und bewegt sich nicht wie unten gezeigt vorwärts
Done Building Project "D:\SolutionPath\ProjectFile10.vcxproj" (default targets).
Es gibt viele .proj
unter SolutionFile.sln
die muss ich bauen.
Ich muss benutzen msbuild.exe
eher, als devenv.com
Es gibt eine Technik, mit der diagnostiziert werden kann, was in msbuild vor sich geht, um herauszufinden, was hier vor sich geht. Legen Sie an einer Eingabeaufforderung eine Umgebungsvariable fest:
set msbuildemitsolution=1
Sobald Sie msbuild ausgeführt haben, generiert dies ein .metaproj
Datei. Diese Datei wird von msbuild intern verwendet und anschließend gelöscht. Sie können es lesen, um den Namen der tatsächlichen Ziele herauszufinden. Das Ziel Build
wird erweitert, um anzuzeigen, was es tatsächlich aufruft. Sie können dann versuchen, die einzelnen Ziele mit dem /t
flag von msbuild, um herauszufinden, welches Ziel das Problem verursacht.
Setzen Sie die Eigenschaft verbosity auf diagnostic und speichern Sie die Ausgabe in einer Datei. Auf diese Weise können Sie feststellen, welches Projekt in Ihrer Lösung hängt, und Ihr Problem diagnostizieren.
Die Befehlszeilensyntax lautet wie folgt, um die Ausgabe in einer Datei mit dem Namen MyProjectOutput.log zu speichern:
msbuild SolutionFile.sln /t:build /fl /flp:logfile=MyProjectOutput.log;verbosity=diagnostic
Es scheint auch, dass Sie nach dem/t-Ziel ein Leerzeichen benötigen, um den im angegebenen Befehl übergebenen Parameter zu erstellen.
msbuild.exe SolutionFile.sln /t:Build /p:Configuration=Release;Platform=Win32
Sind Sie außerdem sicher, dass jedes Projekt eine "Release" - und "Win32" -Konfiguration enthält? Sie können auch einfach den folgenden Befehl ausführen und sehen, was kompiliert wird. Msbuild führt automatisch das Standardziel und die erforderlichen Konfigurationen aus.
msbuild SolutionFile.sln
Eine andere Möglichkeit, die Sie ausprobieren können, besteht darin, das Projekt einfach zu kompilieren und zu sehen, was produziert wird:
msbuild "D:\SolutionPath\ProjectFile10.vcxproj" /fl /flp:logfile=MyProjectOutput.log;verbosity=diagnostic