2009-10-05 75 views
18

我有一個批處理腳本,我想從MSBuild項目中調用,the documentation說我不能在MSBuild項目中使用批處理(控制檯/環境變量)的輸出。從MSBuild執行任務收集輸出

是否有解決方法?

+1

我寫了一個自定義的MSBuild任務,完成我想要的並返回輸出。 – ripper234 2009-10-05 10:43:37

+0

此鏈接可能很有用:http://social.msdn.microsoft.com/Forums/ar/tfsbuild/thread/ef1a0e09-ef66-4ddf-947b-149311182b43 – 2011-09-23 09:19:17

+0

您可以發佈您的自定義MDBuild任務來解決您的問題嗎? – 2013-09-11 14:46:41

回答

24

您可以使用「> output.txt」將命令的輸出重定向到文件並將其讀入變量。

<PropertyGroup> 
    <OutputFile>$(DropLocation)\$(BuildNumber)\Output.txt</OutputFile> 
</PropertyGroup> 
<Exec Command="dir > &quot;$(OutputFile)&quot;" /> 
<ReadLinesFromFile File="$(OutputFile)"> 
    <Output TaskParameter="Lines" ItemName="OutputLines"/> 
</ReadLinesFromFile> 
<Message Text="@(OutputLines->'%(Identity)', '%0a%0d')" /> 
+4

這看起來很hacky,如果命令的輸出是正義有用的MSBuild邏輯?然後你必須稍後刪除文件... – knocte 2012-01-20 18:50:51

+1

使用這樣的邏輯的構建變得痛苦的管理,但我寧願它工作和醜陋,根本不工作。 – evanmcdonnal 2012-04-13 22:28:13

+2

儘管我同意它有點草率,但在檢查其內容後立即添加MSBuild行並沒有什麼大不了,所以沒有駐留文件。 – NightOwl888 2012-09-25 17:29:22