MSBuild任务批处理用于多个任务

6

我有一个 MSBuild 任务有2个步骤,为简单起见,我用 <Message> 进行替换。这两种模式必须作为参数传递给这2个步骤。这2个步骤必须针对每个模式作为一个整体运行。我尝试使用如下所示的任务批处理。

<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
1个回答

7

您当前正在执行任务批处理。您需要做的是通过指定目标输出来进行目标批处理。

<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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接