【问题标题】:buildbot C++ build on Windows: use devenv.com, vcbuild.exe, or MSBuild.exe?buildbot C++ 在 Windows 上构建:使用 devenv.com、vcbuild.exe 还是 MSBuild.exe?
【发布时间】:2010-02-11 14:32:10
【问题描述】:

我的 buildbot 已经运行了 3 年,使用 devenv.com 在 Windows 上编译项目。

现在 devenv.com 在构建 64 位版本时遇到了麻烦:将配置作为“Debug|x64”传递会因为管道字符而产生命令行错误。在引号之间转义和括起来会导致其他错误,有些是因为目录名称中的空格,有些是因为奇怪的命令行理解。

我尝试了 vcbuild.exe 和 MSBuild.exe。 vcbuild.exe 完美运行:我想坚持下去。另一方面,MSBuild.exe 有一个完全奇怪和复杂的输出,我的同事觉得很糟糕。但它到处都被吹捧为 THE 的构建方式。

问题是:devenv.com、vcbuild.exe 和 MSBuild.exe 中哪一个是最有可能持续时间的方法?

【问题讨论】:

  • 您是否尝试过使用插入符号 (^) 转义管道字符,因为这是命令提示符的转义字符。

标签: command-line msbuild buildbot devenv vcbuild


【解决方案1】:

MSBuild(在 Visual Studio 2010/.NET 4 之前)本身并不构建 C++ 项目。它调用 vcbuild.exe。因此,如果您对不使用 MSBuild 感到高兴,那么对于 C++ 项目,我会坚持使用它。对于托管项目(以及使用 VS 2010 的 C++),请使用 MSBuild。

【讨论】:

    【解决方案2】:

    MSBuild 是“最有可能持续”的方法。 VCBuild.exe 已死;它的最后一个版本是 2008 年。如果需要从 VS2008 或更早版本构建 VC 项目,MSBuild 4.0 仍将使用它。至于 devenv.exe——当然,它只是无头的 Visual Studio。从功能上讲,它与在 VS 中点击 build 相同。这意味着这些天来,它基本上只是移交给 MSBuild,但有时并行度比 msbuild.exe 所获得的要少。您可能仍必须使用 devenv.exe 的主要原因是 .vdproj(部署)项目。这些遗留的东西有一个硬编码到 VS 中的构建过程。我推荐一个基于 MSBuild 的替代方案,如 WiX 或 Installshield。不久之后,在 VS 中构建的所有内容都是 MSBuild。

    简而言之——MSBuild 是未来,除非你有部署项目或其他特殊情况,否则使用它。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,并通过 Windows-shell 转义管道字符来解决它:

      "Debug^|Win32"
      

      【讨论】:

        【解决方案4】:

        msbuild.exe 不(不知道?)知道如何构建安装项目。 devenv.exe 可以。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-12-30
          • 1970-01-01
          • 2011-04-01
          • 1970-01-01
          • 2015-01-02
          • 2014-10-19
          • 1970-01-01
          • 2010-11-09
          相关资源
          最近更新 更多