并行运行多个exec任务

本文关键字:exec 任务 运行 并行 | 更新日期: 2023-09-27 18:09:25

我在构建过程中批量处理多个exec任务。每次执行大约需要一分钟才能完成,因此我希望并行运行它们以提高整体构建性能。

运行多个exec任务的目标器:

<Target Name="CreatePackages" DependsOnTargets="Build" AfterTargets="Build">
  <Exec Command="SomeExecutable.exe %(SomeGroup.Location) </Exec>
</Target>

ItemGroup定义

<ItemGroup>
  <SomeGroup Include="Production">
    <Location>SomePath/Production</Location>
  </SomeGroup>
  <SomeGroup Include="Test">
    <Location>SomePath/Test</Location>
  </SomeGroup>
  <SomeGroup Include="Development">
    <Location>SomePath/Development</Location>
  </SomeGroup>
</ItemGroup>

我如何并行运行这些exec任务?

并行运行多个exec任务

MSBuild不会在任务或目标级别并行,而只在项目级别并行。您的选择是将每个单独的位置包装在目标中并并行地调用项目本身(混乱),或者使用TPL (System.Threading.Tasks.Parallel)和Microsoft.Build.Tasks.ExecSystem.Diagnostics.Process(简单)编写自定义任务,或者尝试YieldDuringToolExecution(技术上不是并行化,但其他任务会等待更少)。