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

时间:2015-07-23 09:09:48

标签: visual-studio build msbuild devenv incredibuild

我使用Xorax IncrediBuild来构建 Visual Studio 2013 (或更高版本)的解决方案和项目,它们大多数.vcxproj包含一堆.csproj个。{ / p>

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

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

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

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

我想了解使用两个引擎之间是否存在任何差异

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

  • IncrediBuild"正在初始化..."在DevEnv.exe

  • 的情况下,阶段需要稍长的时间
  • BuildConsole.exe显然会生成不同的输出。

  • 构建性能没有(或无意义)差异。

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

2 个答案:

答案 0 :(得分:6)

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

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

补充意见:

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

答案 1 :(得分:1)

微软是pretty explicit关于它:

  

对于与构建相关的任务,现在建议您使用MSBuild而不是devenv。有关更多信息,请参阅MSBuild命令行参考。

自VS2010以来Devenv文档中的一个注释,VS的第一个版本开始支持使用MSBuild构建C ++项目,并且还将默认项目文件扩展名从.vcproj更改为vcxproj。

这种建议的智慧只有在他们不明确的时候才能推断出来。你准备好了,Devenv.exe是一个非常繁重的进程,有很多DLL依赖,需要一段时间才能开始。另一个你可能会因为你现在的方式而烦恼,最初的指导是使用Devenv.com而不是Devenv.exe。这些依赖项也是麻烦制造者,当Devenv.exe在一个不寻常的运行时环境(如服务)中运行时,这种情况往往会妨碍或者只是简单地摔倒。来自地狱的样本故事是this Q+A,三个答案,没有一个看起来正确。还有其他人。

简单的建议是使用推荐的方式。