我在构建过程中批处理多个 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
任务?
最佳答案
MSBuild 不会在任务或目标级别并行化,而只会在项目级别并行化。您的选择是将每个单独的位置包装在目标中并并行调用项目本身(困惑),或者使用 TPL (System.Threading.Tasks.Parallel
) 和 Microsoft 编写自定义任务.Build.Tasks.Exec
或 System.Diagnostics.Process
(简单),或尝试 YieldDuringToolExecution (技术上不是并行化,但其他任务会等待更少)。
关于c# - 并行运行多个执行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24321614/