2013-09-27 159 views
3

我有一個MSBuild任務2步驟,爲簡單起見,我用<Message>替換。有兩種模式必須作爲參數傳遞給步驟。這兩個步驟必須作爲每個模式的單位運行。我嘗試使用如下所示的任務批處理。MSBuild任務批處理多個任務

<ItemGroup> 
    <Mode Include="Mode1" /> 
    <Mode Include="Mode2" /> 
</ItemGroup> 

<Target Name="Build"> 
    <Message Text="Step1: %(Mode.Identity)" /> 
    <Message Text="Step2: %(Mode.Identity)" /> 
</Target> 

的問題是,每一步都分別處理,產生以下輸出:

Step1: Mode1 
Step1: Mode2 
Step2: Mode1 
Step2: Mode2 

有沒有任何方法實現這一目標?

Step1: Mode1 
Step2: Mode1 
Step1: Mode2 
Step2: Mode2 

回答

4

您目前正在做Task Batching。你想要做的是通過指定目標的輸出來進行目標批處理。

<ItemGroup> 
    <Mode Include="Mode1" /> 
    <Mode Include="Mode2" /> 
</ItemGroup> 

<Target Name="Build" Outputs="%(Mode.Identity)" > 
    <Message Text="Step1: %(Mode.Identity)" /> 
    <Message Text="Step2: %(Mode.Identity)" /> 
</Target> 
+0

完美,謝謝! – ytran