【问题标题】:Why building project using msbuild is way slower than using visual studio IDE?为什么使用 msbuild 构建项目比使用 Visual Studio IDE 慢得多?
【发布时间】:2018-01-23 15:55:01
【问题描述】:

我正在尝试使用 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 分钟 使用 cmdline:大约需要 20 分钟

在命令行中看起来它构建了很多不是在 IDE 中构建的项目 有什么建议吗?

【问题讨论】:

    标签: visual-studio command-line msbuild


    【解决方案1】:

    在命令行中看起来它构建了很多不是在 IDE 中构建的项目有什么建议吗?

    那是因为您在命令中使用了属性 /t:rebuild

    This switch performs 与集成开发环境 (IDE) 中的 重建解决方案 菜单命令相同的功能 - 将清理然后从头开始构建解决方案,忽略之前所做的任何事情。因此 MSBuild 将构建所有项目,无论它们之前是否构建过。

    当您在 IDE 中使用构建选项而不是 Rebuild 构建项目时,它将执行增量构建:如果它认为不需要重新构建项目,则不会。如果它们没有改变,它也可能使用项目的部分构建部分。这就是很多项目在命令行中构建但不是在 IDE 中构建的原因。

    为了加快构建速度,您可以在命令行中将属性更改为/t:build,或者在IDE中构建时选择rebuild选项。

    此外,影响构建速度的因素还有很多,例如并行度。当我们在IDE中构建多个项目时,parallel的默认值为8,Tools->options->Projects and Solutions->Build and Run:

    MSBuild 命令行也支持并行,/maxcpucount Switch

    msbuild.exe myproj.proj /maxcpucount:3 
    

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

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2018-03-03
      • 2016-12-19
      • 2019-09-24
      • 2013-09-01
      • 1970-01-01
      • 2016-11-03
      • 2020-12-06
      • 2023-03-08
      • 2011-04-08
      相关资源
      最近更新 更多