【问题标题】:Unable to MSBUILD Multiple 'Target' parameters in Parallel无法并行 MSBUILD 多个“目标”参数
【发布时间】:2019-03-06 18:27:53
【问题描述】:

如下执行解决方案构建时,会创建多个工作节点,并在 2 分钟内完成该过程。

MSBuild.exe 路径\to.sln /p:OutDir=C:\out\ -m:4 /p:Configuration=QA /p:Platform="Any CPU"

但是,当尝试执行具有特定目标(T1、T2、T3)的 SLN 时,这些目标是按系列而不是并行构建的。仅创建主 msbuild.exe 节点;没有工人

MSBuild.exe -target:Deployment\T1 -target:Deployment\T2 -target:Deployment\T3 path\to.sln /p:OutDir=C:\out\ -m:6 /p:Configuration=QA /p:Platform="Any CPU"

尽管有 -m:6 参数,但只创建了一个工作节点;这个过程需要 2.5 倍的时间来做同样的事情。

  • 在指定目标时是否有一些限制以防止它们被并行执行?
  • 有什么解决方法吗?

【问题讨论】:

  • 我不知道有什么限制。但是为什么要两次指定 Deployment\T1 目标呢?
  • 哎呀 - 复制/粘贴问题。在我的实际命令中,这些是项目名称

标签: c# msbuild


【解决方案1】:

据我了解,并行 msbuild 仅适用于“msbuild 核心任务”。我的意思是,有一个 msbuild 基本任务:restore、build、test 等,这些任务可以并行运行。

但 msbuild 不会尝试并行目标。在这种情况下,msbuild 会按顺序运行它们。

目标适用于/t:Restore,Build,Test 之类的情况,而且它永远不会同时发生。

所以,你可以说这是限制。

【讨论】:

  • 谢谢——这正是我所担心的。最后(对于其他正在寻找解决方案的人)我刚刚启动了 6 次并发 MSBUILD 作业,每个目标 1 次,总共运行了 1 分半钟!最快的方式。
猜你喜欢
  • 2010-11-09
  • 2023-03-26
  • 2013-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-01
相关资源
最近更新 更多