【问题标题】:Does MSBuild resolve project to project references when building a solution?构建解决方案时,MSBuild 是否将项目解析为项目引用?
【发布时间】:2016-04-26 07:08:25
【问题描述】:

MSDN 文档Visual Studio Integration (MSBuild) 状态:

构建解决方案

在 Visual Studio 中,解决方案文件和项目构建顺序是 由 Visual Studio 本身控制。当构建解决方案 命令行中的msbuild.exe,MSBuild 解析解决方案文件并 命令项目构建。在这两种情况下项目都已建成 单独按依赖顺序,以及项目到项目的引用 不被遍历。相反,当单个项目被构建时 使用 msbuild.exe,遍历项目到项目的引用。

在我的 Visual Studio 2010 中,使用 MSBuild 从命令行构建 .sln 文件时,项目到项目的引用全部构建,无论它们是否出现在解决方案中。

我在这里错过了什么?还是文档完全错误?

【问题讨论】:

    标签: visual-studio msbuild


    【解决方案1】:

    您可以通过运行 msbuild Solution.sln /t:ProjectName /p:BuildProjectReferences=false 忽略项目对项目引用的构建,这解释了 msdn 中的句子。

    【讨论】:

    • 添加 /p:BuildProjectReferences=false 也会导致 MsBuild 不构建作为解决方案一部分的项目引用。如果项目包含对解决方案中存在的其他项目之一的项目引用,这会导致构建失败。
    【解决方案2】:

    您是正确的,msbuild.exe 将整理所有项目引用,无论它们是否是解决方案的一部分,而不是在 Visual Studio 2010/2012/2013/2015(以及可能的更高版本)中构建,您将获得如果引用的项目不是解决方案的一部分或未预先构建,则构建失败。

    简而言之,是的,文档似乎有点不对。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      • 2017-12-23
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      相关资源
      最近更新 更多