5

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

<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

1 回答 1

6

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

<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>
于 2013-09-30T13:53:23.033 回答