APP下载

微软改进MSBuild平行处理能力提升建置效率

消息来源:baojiabao.com 作者: 发布时间:2026-07-11

报价宝综合消息微软改进MSBuild平行处理能力提升建置效率

微软在Visual Studio 2019中加入一系列功能来平行化建置工作,在最新版本中,微软利用Multi-ToolTask​​(MTT)来处理部分既有的Vcxproj建置任务,使得这些任务更加平行,进而提升建置的吞吐量。

微软提到,在为Android开发工具的时候,他们将编译系统clang和gcc,加到微软的建置引擎MSBuild中,由于clang和gcc需要使用建置系统的平行化模型,但是MSBuild只有在专案层级提供平行化,因此微软发展出了MTT,MTT是一种MSBuild任务,其放弃了MSBuild原本的批次处理系统,并且解除单一任务的限制,这使得任务能够平行处理,并且能够应用MSBuild中所没有的排程功能。

而现在微软扩展MTT的使用范围,用来处理Vcxproj建置任务,想要启用该功能的开发者,需要改变MSBuild属性,或是将环境变数UseMultiToolTask设定为true,便可以启动MTT。微软提到,因为MTT使用内建排程器(Scheduler),所以可以利用一些功能来控制吞吐量,像是开发者可以将属性EnforceProcessCountAcrossBuilds设定为true,就能限制MTT在跨多个专案和MSBuild实例时,所使用的程序数量,以改善超量资源预定,带来的内存限制和速度降低影响。

另外,也可以使用MultiProcMaxCount或CL_MPCount属性,定义最大作业数量,在预设情况,这两个数值等于CPU逻辑处理器的数量。还有,在项目(Item)中设定元资料MultiToolTaskDependency,则可以在同一个MTT实例中创建与前其他项目的相依性。

微软提醒,不同程式码所获得的效能提升程度不同,这个版本MTT仅支援MIDL、CL、 Clang与FXC的平行化,要是开发者的专案使用自定义建置工具,则可以利用鼠标点击设定,以启用平行自定义建置工具。

2020-02-04 10:50:00

相关文章