如何解决具有/ 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文件,仅在以下情况下提及它:>
- 如果属性值为零,请将其设置为
true
- 将其值传递给
MSBuild.BuildInParallel
属性。 - 在构建Silverlight项目时,硬编码通过
false
。 (我们仍然有这些,我可以同意-它们总是按顺序构建的:-()
我的结论-该文章在将BuildInParallel
传递给msbuild.exe方面具有误导性,因为它没有任何意义,除非我们在那里传递false
。也是不需要的,只是不要通过/m
。
但是总是有可能我在这里丢失了一些东西,所以我的问题-在没有msbuild.exe /m
的情况下运行/p:BuildInParallel=true
时,我会失去什么?
(我想我知道答案-绝对没有,但以防万一)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。