webentwicklung-frage-antwort-db.com.de

Erstellen einer Lösungsdatei mit msbuild

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

42
TVSuser1654136

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.

32
the_mandrill

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
25