Параллельное выполнение нескольких задач exec
Я дозирую несколько 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
задачи параллельно?
1 ответ
MSBuild не распараллеливается на уровне задач или целей, а только на уровне проекта. Вы можете выбрать обертывание каждого отдельного местоположения в целевом объекте и вызвать сам проект параллельно (грязно) или написать пользовательское задание с помощью TPL (System.Threading.Tasks.Parallel
) а также Microsoft.Build.Tasks.Exec
или же System.Diagnostics.Process
(легко), или попробуйте YieldDuringToolExecution (технически не распараллеливание, но другие задачи будут ждать меньше).