visual-studio - 将 IncrediBuild 与 DevEnv.exe 与 MSBuild.exe 结合使用

标签 visual-studio build msbuild devenv incredibuild

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

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

  • 当 IncrediBuild 与常规 Visual Studio 一起使用时,it uses the Devenv.exe by default .
  • 从 5.0 版开始,BuildConsole.exe支持新开关:/UseMSBuildspecifically instruct IncrediBuild to use MSBuild's build engine instead of the default Visual Studio's DevEnv .

  • 因此,对于 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 ?

    最佳答案

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

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

    补充评论:

  • 使用 Devenv 时,初始化阶段确实更长,因为 devenv 以与 msbuild 不同的方式加载和解析解决方案和 .vcxproj 文件。解决方案的项目越多——这个阶段需要的时间越长。当同时构建多个项目时,完成此阶段所需时间的增加通常会被实际构建时间的速度增加大大抵消。
  • Devenv 强烈推荐用于我们的预测执行功能,由于上述工作方式,它可以提供高达 20% 的额外构建加速,而使用 MSBuild 是不可能的。
  • 关于visual-studio - 将 IncrediBuild 与 DevEnv.exe 与 MSBuild.exe 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31582932/

    相关文章:

    visual-studio - ESLint 支持 Visual Studio 2017

    java - 如何导入java项目(Eclipse)

    c++ - 了解 find_package 是否定义 INCLUDE_DIR 或 INCLUDE_DIRS 的标准方法

    visual-studio - 如何确保 nuget 程序集是按包添加的,而不仅仅是对 DLL 文件的引用?

    .net - NuGetPackageImportStamp 的用途是什么?

    c# - 异步任务中的异常在 Visual Studio 中被拦截

    c++ - 如何告诉 Visual Studio 使用不同的源代码目录来调试库?

    visual-studio - 在 Visual Studio 2008 Express Edition (VS2008EE) 中配置 64 位编译

    c - ld:链接器错误

    msbuild - 如何在 MSBuild 中获取基本 msi 安装包 (setup.exe) 的文件版本