我有一个包含 2 个步骤的 MSBuild 任务,为简单起见,我将其替换为 <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
最佳答案
您目前正在做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>
关于多个任务的 MSBuild 任务批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19060225/