2011-12-16 60 views
2

我正在使用Team Build(2010)通過Exec任務調用msbuild腳本,該任務調用批處理文件,該文件又調用msbuild。就像這樣:如何從團隊構建中的msbuild批處理文件調用msbuild?

<Exec Command="BatchFileThatCallsMSBuild.bat" /> 

當然批處理文件做了一堆其他垃圾,或者我只是使用MSBuild任務。

問題是,當批處理文件試圖調用msbuild時,它找不到它。

'msbuild' is not recognized as an internal or external command, operable program or batch file. 

如何獲得在exec任務中設置的必要環境?

我試圖改變命令:

<Exec Command="%22$(VS100COMNTOOLS)..\..\VC\vcvarsall.bat%22&amp;BatchFileThatCallsMSBuild.bat" /> 

,但沒有骰子,依然的MSBuild找不到。

+0

你是否指定批處理文件中msbuild可執行文件的完整路徑,還是依賴於相對路徑(並不保證它是你期望的)? – David 2011-12-16 03:02:08

回答

2

我想出的答案是利用很少演示的在線多行命令字符串Exec任務。

<Exec Command="call &quot;%VS100COMNTOOLS%..\..\VC\vcvarsall.bat&quot; x86 
    set AnotherEnvVar=$(RandomMSBuildProperty) 
    call BatchFileThatCallsMSBuild.bat 
    type file_with_output_from_the_msbuilds_in_the_batchfile.log" /> 

這讓我建立了基本的編譯環境(來電vcvarsall),推一個MSBuild屬性出到Exec的環境下,分批msbuilds能看到它,調用批處理文件,並連拉隱藏的MSBuild輸出到Exec任務的級別,以便在Team Build中進行更清晰的日誌記錄。

我不喜歡在代碼中嵌入另一個對此特定VS版本的引用,但它現在可行。

相關問題