2011-12-28 39 views
1

我寫一個簡單的MSBuild腳本,我想執行以下操作:獲取ExecTask輸出到ItemCollection

  • 運行使用Exec任務的命令行工具。
  • 將工具的輸出獲取到某個項目集合中。
  • 將此集合用作其他任務的輸入。

這個的上下文是,我們有幾個命令行靜態分析和其他分析工具(想起StyleCop)。

我想運行一個git diff命令,並獲取最新提交的文件並將它們送入StyleCop或任何其他分析工具。

我找不到任何有關如何使用Exec任務執行此操作的參考。

編輯:我試圖使用ReadLinesFromFile任務:

<Exec 
    Command="git diff --name-only HEAD~1 HEAD > C:\output.txt" 
    WorkingDirectory="D:\Code" /> 

<ReadLinesFromFile 
    File="C:\output.txt"> 
    <Output 
    TaskParameter="Lines" 
    ItemName="ItemsFromFile" /> 
</ReadLinesFromFile> 

<StyleCopTask 
    ProjectFullPath="$(MSBuildProjectFile)" 
    SourceFiles="@(ItemsFromFile)" 
    ForceFullAnalysis="true" 
    TreatErrorsAsWarnings="true" 
    OutputFile="StyleCopReport.xml" 
    CacheResults="true" /> 

但這似乎並沒有工作。

我正在使用ItemsFromFile集合嗎?

+0

的'ReadLinesFromFile'和'StyleCopTask'看起來不錯。 'output.txt'看起來像什麼?如果它包含每行一個完整的源代碼文件路徑,則應該起作用。 – 2012-02-04 13:07:55

回答

2

如果Exec任務的輸出重定向到一個文件,你可以使用ReadLinesFromFile任務:http://msdn.microsoft.com/en-us/library/ms164299.aspx

+0

我可以做到這一點,認爲有一個更簡單和更乾淨的方式來做到這一點。 – 2011-12-28 16:33:09