c# - 并行运行多个执行任务

标签 c# .net msbuild msbuild-task msbuild-target

我在构建过程中批处理多个 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.ExecSystem.Diagnostics.Process(简单),或尝试 YieldDuringToolExecution (技术上不是并行化,但其他任务会等待更少)。

关于c# - 并行运行多个执行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24321614/

相关文章:

c# - 如何从 C# 更改 IIS 中应用程序池的用户名/密码?

.net - powershell 或 net 发送带有身份验证的电子邮件

visual-studio - 如何在 MSBuild/TFS 中缩进构建步骤

c# - .NetCore 项目在 Windows 上的 JetBrains Rider 中加载失败

C#,max,在列表中查找面积最大的矩形

C#:异步NamedPipeServerStream的理解

c# - 是否可以在传递给基础构造函数之前进行转换?

.net - .NET 中是否有相当于 'sscanf()' 的值?

c# - 如何访问 IQueryable<T> 对象中的连续元素?

asp.net-mvc - 在 Jenkins CI 中成功构建后打包多个发布配置文件 .pubxml