将IncrediBuild与DevEnv.exe与MSBuild.exe一起使用

mlo*_*kot 6 msbuild build visual-studio devenv incredibuild

我使用Xorax IncrediBuild来构建Visual Studio 2013(或更高版本)的解决方案和项目,它们主要.vcxproj是一堆.csproj的.

我花了一点时间挖掘,但我已经了解到:

因此,对于Visual Studio项目,有两种可用模式:

  • BuildConsole.exe MyProj.vcxproj 哪个使用 DevEnv.exe

  • BuildConsole.exe MyProj.vcxproj /usemsbuild 哪个使用 MSBuild.exe

我想知道使用这两个引擎之间是否存在任何差异.

我做了一些测试并观察到:

  • IncrediBuild"初始化..."阶段需要稍长的时间DevEnv.exe.

  • BuildConsole.exe 显然,产生不同的输出.

  • 构建性能没有(或无关紧要)差异.

如果构建单独的C/C++本机项目(.vcxproj)以及整个解决方案(.sln),使用对比的优缺点是什么?DevEnv.exeMSBuild.exe

小智 6

**免责声明:我在IncrediBuild工作**

我们与Microsoft一起确定,为了获得与在Visual Studio中构建(与没有IncrediBuild)相同的构建方式,应该使用DevEnv.MSBuild在生成的构建输出中以及在执行自定义步骤和其他一些小事情时的行为方式,以与VS略有不同的方式执行构建.如果用户希望IncrediBuild构建的行为方式与从Visual Studio构建时的行为方式相同,则应使用默认方式(IncrediBuild执行DevEnv).如果用户使用MSBuild执行其构建,无论是从命令行还是通过TFS,都应使用UseMSBuild开关.我们希望允许用户选择他们希望IncrediBuild工作的方式,具体取决于他们使用它们的方式,

附加评论:

  1. 使用Devenv时,初始化阶段确实更长,因为devenv以与msbuild不同的方式加载和解析解决方案和.vcxproj文件.解决方案拥有的项目越多 - 这个阶段应该花费的时间越长.这个阶段完成所需的时间增加通常会大大抵消实际构建时间的速度增加 - 同时构建多个项目.
  2. Devenv强烈推荐用于我们的预测执行功能,由于使用MSBuild无法实现的上述工作方式,该功能可提供高达20%的额外构建加速.