为什么使用msbuild构建项目比使用Visual Studio IDE慢得多?

4

我正在尝试使用msbuild通过命令行构建Visual Studio项目。 我使用了以下命令:

SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120
msbuild.exe ../../../embedded/ports/visualC12/config-from-host.vcxproj   
/p:Configuration=Release /p:Platform=Win32  /t:rebuild

使用IDE:大约需要2分钟 使用命令行:大约需要20分钟

在命令行中,它似乎构建了很多在IDE中没有构建的项目。 有什么建议吗?

1个回答

3
在命令行中,它似乎构建了许多未在IDE中构建的项目。有什么建议吗?
这是因为您在命令中使用了属性/t:rebuild此开关执行与集成开发环境(IDE)中的重建解决方案菜单命令相同-将清理并从头开始构建解决方案,忽略先前完成的任何操作。因此,MSBuild将构建所有项目,而不管它们之前是否已构建。
当您在IDE中使用构建选项而不是重建时,它将执行增量构建:如果它认为不需要重新构建项目,则不会重新构建。如果尚未更改,它还可以使用部分构建的项目位。这就是在命令行中构建了许多项目但在IDE中未构建的原因。
为了使构建速度更快,您可以在命令行中将属性更改为/t:build,或在IDE中选择重建选项。
此外,影响建筑速度的因素有很多,例如并行处理。当我们在IDE中构建多个项目时,默认的并行处理值为8,可以在“工具-选项-项目和解决方案-生成和运行”中进行设置。

enter image description here

MSBuild命令行也支持并行处理,/maxcpucount开关

msbuild.exe myproj.proj /maxcpucount:3 

因此,当您比较命令行和IDE之间的构建速度时,您必须确保所有相关设置在命令行和IDE中都相同。

希望这可以帮助您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接