2013-01-02 54 views
34

我正要建立使用msbuild.I Visual Studio解決方案文件,構建一個解決方案文件中使用的命令行以下爲構建解決方案使用的MSBuild

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

Eventhough構建開始在某些點上打造的是看掛並沒有向前移動,如下所示

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

有很多.proj下SolutionFile.sln,我必須建立。

我不得不使用msbuild.exe而非devenv.com

+1

請提供更多信息/ MSBuild的輸出,這是不可能的,現在來回答 – stijn

回答

27

有用於診斷裏面有什麼的MSBuild這可以幫助你找出這裏發生了什麼情況發生的技術。在命令提示符下設置環境變量:

set msbuildemitsolution=1 

一旦你已經運行的MSBuild那麼這將產生一個.metaproj文件。這個文件是msbuild在內部使用的,但是隨後被刪除。你可以閱讀它來找出實際目標的名稱。 Build目標被展開以顯示它實際調用的內容。然後,您可以嘗試使用msbuild的/t標誌構建單個目標,以確定哪個目標導致該問題。

+1

添加鏈接因爲它解釋瞭如何讓這個輸出顯示出來。你必須從不同的命令行設置這個屬性。偉大的建議。 http://stackoverflow.com/questions/3887263/msbuildemitsolution-not-working-with-net-4 – SoftwareCarpenter

23

設置冗長屬性診斷和輸出保存到一個文件中。這將幫助您確定解決方案中的哪個項目掛起並幫助診斷您的問題。

的命令行語法將如下所示將輸出保存到一個名爲MyProjectOutput.log文件:

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

還顯示出你所需要的/噸的目標建立在參數傳入後,空間你列出的命令。

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