【问题标题】:MSBuild vs devenv for command line builds用于命令行构建的 MSBuild 与 devenv
【发布时间】:2023-03-30 19:15:01
【问题描述】:

我想知道:从命令行编译解决方案时使用 msbuild 和 devenv 有什么区别?

注意到一个明显的事情是 msbuild 确实构建了解决方案中不包含的依赖项目,而 devenv 没有。

还有其他的吗?是否有一些特殊标志可以传递给 msbuild 以使其与 devenv 构建完全匹配?

附:我正在使用 Visual Studio 2010 SP1

【问题讨论】:

  • 毕竟 devenv 调用 msbuild 来执行构建!

标签: c# c++ visual-studio-2010 msbuild devenv


【解决方案1】:

根据MSDN Blog Entry,他们试图将差异最小化,但那些存在的差异(即使用集成的 C# 编译器而不是 csc.exe 或设置 BuildingInsideVisualStudio 属性)主要是为了优化构建的性能。

【讨论】:

  • 此链接已损坏
  • 是的!不久前,他们在整个博客系统中进行了洗牌。我用我认为的版本更新链接。
【解决方案2】:

我遇到过devenv在项目文件丢失时写了错误消息,但无论如何都返回0的情况。相比之下,msbuild 返回一个非零值。我将我们的 makefile 切换为使用 msbuild,这样我们就不会忽略错误。

【讨论】:

    【解决方案3】:

    MSBuild 的主要优点是您无需安装 Visual Studio。

    MSBuild 的一个限制是它不支持构建 Visual Studio 安装项目 (.vdproj)。

    (您可以通过 defining an exec task which calls devenv 解决此问题,但您仍然需要 Visual Studio。)

    【讨论】:

      【解决方案4】:

      另一个主要区别是msbuild 有一些devenv 不存在的选项。据我所知,没有办法增加devenv 的详细程度,但您可以通过以下选项增加msbuild 的详细程度:

      /v:diag
      

      【讨论】:

        【解决方案5】:

        我在一个多层团队中体验过一个项目:开发人员、测试人员、部署人员。 MSBuild 是部署者的主要工具:他们可以编译和重新编译,只需设置构建参数编辑 MSBuild 的 xml 配置文件,而无需打开 devenv。事实上,他们经常在根本没有 devenv 的 pre-prod 环境中使用 MSBuild。

        Nant 是 Apache Foundation 的类似工具。

        更多信息请看这里:

        【讨论】:

          猜你喜欢
          • 2012-06-17
          • 2012-03-20
          • 1970-01-01
          • 2023-03-07
          • 1970-01-01
          • 2018-05-25
          • 2023-03-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多