2011-07-27 15 views
3

我不知道如何做到這一點。我有一個批處理腳本文件用於執行多個msbuild調用。我不希望msbuild輸出會污染我的命令窗口,而是我想讓它轉儲到日誌文件中。我不知道如何做到這一點,但這裏是我的腳本至今:批處理腳本 - 如果成功,將msbuild輸出轉儲到特定文件而不是控制檯窗口?

@ECHO Building shared libraries ... 

msbuild "SharedLibraries.sln" 
:: Not sure how to catch an unsuccessful build here for my GOTO ERROR? 
:: Copy dll files to specific location 

@ECHO Building primary application... 

msbuild "Myapp.sln" 
:: Not sure how to catch an unsuccessful build here for my GOTO ERROR? 

:ERROR 

那麼,如何我:

  1. 轉儲的MSBuild輸出到一個日誌文件?
  2. 抓住不成功的構建並轉到錯誤標籤?

回答

10

添加/fileLogger命令行開關導致的MSBuild寫生成輸出到文件msbuild.log在當前目錄中,而/noconsolelogger開關將導致的MSBuild不再寫入到標準輸出。文件名可以使用/flp開關如下面的例子來設置:

msbuild "SharedLibraries.sln" /nologo /noconsolelogger /fileLogger /flp:logfile=buildlog.txt 

詳見MSBuild Command Line Reference

關於你的第二個問題;的MSBuild返回如果構建失敗的一個非零退出代碼,它可以像往常一樣處理:

msbuild "SharedLibraries.sln" /nologo /noconsolelogger /fileLogger /flp:logfile=SharedLibraries.log 
if not errorlevel 0 goto ERROR 

msbuild "Myapp.sln" /nologo /noconsolelogger /fileLogger /flp:logfile=Myapp.txt 
if not errorlevel 0 goto ERROR 

:ERROR 
+1

當然,好老的輸出重定向工作也將輸出寫入到文件,而不是標準輸出:'的MSBuild「 SharedLibraries.sln「> SharedLibraries.log' –

相關問題