具有/ p:BuildInParallel = true和/ m参数的msbuild.exe命令行-不同组合之间有什么区别?

问题描述

在阅读https://www.hanselman.com/blog/FasterBuildsWithMSBuildUsingParallelBuildsAndMulticoreCPUs.aspx之后将其发布。要么这很明显是泥泞,要么我只是愚蠢。

我一直在命令行上运行/m且没有任何/p:BuildInParallel=true的msbuild.exe,它总是产生预期数量的msbuild节点(在我的台式机上为12,在笔记本电脑上为4)该解决方案将预测各自的并发度(大多数时间一次为12或4)。

另一方面,当我从目标文件调用MSBuild任务并将其传递给多个项目(或解决方文件)时,我总是设置MSBuild的BuildInParallel属性任务。因为这是您使用MSBuild任务并行构建项目的方式,对吧?

请注意,这是MSBuild任务的属性,而不是Configuration中传递的build属性(例如MSBuild.Properties)。

文章建议实际上有一个同名的build属性-BuildInParallel,它补充了/m开关,这对我来说是完整的消息。我在* c:\ Program Files(x86)\ Microsoft Visual Studio \ 2019 \ Enterprise \ MSBuild * 搜索了所有* .targets文件,仅在以下情况下提及它:>

  1. 如果属性值为零,请将其设置为true
  2. 将其值传递给MSBuild.BuildInParallel属性
  3. 在构建Silverlight项目时,硬编码通过false。 (我们仍然有这些,我可以同意-它们总是按顺序构建的:-()

我的结论-该文章在将BuildInParallel传递给msbuild.exe方面具有误导性,因为它没有任何意义,除非我们在那里传递false。也是不需要的,只是不要通过/m

但是总是有可能我在这里丢失了一些东西,所以我的问题-在没有msbuild.exe /m的情况下运行/p:BuildInParallel=true时,我会失去什么?

(我想我知道答案-绝对没有,但以防万一)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)