2013-09-27 121 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