Concurrency 带有/p:BuildInParallel=true和/m参数的msbuild.exe命令行-不同组合之间的区别是什么?
阅读后发布此消息。要么这是明摆着的,要么我就是个傻瓜 我总是在命令行上使用Concurrency 带有/p:BuildInParallel=true和/m参数的msbuild.exe命令行-不同组合之间的区别是什么?,concurrency,msbuild,Concurrency,Msbuild,阅读后发布此消息。要么这是明摆着的,要么我就是个傻瓜 我总是在命令行上使用/m运行msbuild.exe,而不使用任何/p:BuildInParallel=true,并且它总是生成预期数量的msbuild节点(桌面上12个,笔记本电脑上4个),并生成解决方案,以预测相应的并发程度(大多数情况下每次12或4个) 另一方面,当我从目标文件调用MSBuild任务并将多个项目(或解决方案文件)传递给它时,我总是设置MSBuild任务的BuildInParallel属性。因为这就是使用MSBuild任务并
/m
运行msbuild.exe,而不使用任何/p:BuildInParallel=true
,并且它总是生成预期数量的msbuild节点(桌面上12个,笔记本电脑上4个),并生成解决方案,以预测相应的并发程度(大多数情况下每次12或4个)
另一方面,当我从目标文件调用MSBuild
任务并将多个项目(或解决方案文件)传递给它时,我总是设置MSBuild任务的BuildInParallel
属性。因为这就是使用MSBuild任务并行构建项目的方式,对吗
请注意,这是MSBuild
任务的属性,而不是在MSBuild.Properties
中传递的生成属性(如Configuration
)
这篇文章建议实际上有一个同名的build属性-BuildInParallel
,它是对/m
开关的补充,这对我来说完全是新闻。我搜索了*c:\Program files(x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild*下的所有*.targets文件,只在以下上下文中提到了它:
true
MSBuild.BuildInParallel
属性false
。(我们仍然有这些,我可以同意——它们总是按顺序构建的:-()BuildInParallel
传递给msbuild.exe方面具有误导性,因为它没有任何意义,除非我们在那里传递false
。这也是不必要的,只是不要传递/m
但是我总是有可能在这里遗漏了一些东西,所以我的问题是:在没有/p:BuildInParallel=true
的情况下运行msbuild.exe/m
时,我会丢失什么
(我想我知道答案——绝对没有,只是以防万一)