【问题标题】:Differences between Visual Studio Build step and MSBuild Build stepVisual Studio 构建步骤和 MSBuild 构建步骤之间的差异
【发布时间】:2017-02-01 17:31:40
【问题描述】:

我正在创建一些构建定义,我看到的 Visual Studio 构建步骤和 MSBuild 构建步骤之间的唯一区别是 VS 构建步骤将 Visual Studio 版本添加到构建中。

有人可以解释更多不同之处吗?

【问题讨论】:

    标签: visual-studio tfs msbuild tfs-2015


    【解决方案1】:

    他们几乎和丹尼尔提到的一样。主要区别与您发现的一样:Visual Studio Build step add Visual Studio Version to the build。

    我应该使用 Visual Studio Build 步骤还是 MSBuild 步骤?

    如果您正在构建解决方案,在大多数情况下,您应该使用 Visual Studio 构建步骤。这一步自动进行:

    • 为您设置 /p:VisualStudioVersion 属性。这会强制 MSBuild 使用一组特定的目标来增加 成功构建的可能性。

    • 指定 MSBuild 版本参数。

    在某些情况下,您可能需要使用 MSBuild 步骤。例如,你 如果您正在构建代码项目而不是解决方案,则应该使用它。

    【讨论】:

    • 当微软拒绝更新不到 2 年的程序以适应新的 Visual Studio 版本时,您还必须使用 msbuild-task
    • 我们不得不切换到 MS build,因为 Visual Studio 忽略了 SSDT 项目之间的数据库引用。
    • 两者都需要安装 Visual Studio 吗?
    • MSBuild 也会忽略解决方案配置,例如无论是否在 VS Configuration Manager UI 中选中“构建”,它都会在解决方案中构建所有项目。
    【解决方案2】:
    【解决方案3】:

    我看到这个问题是关于两个构建任务的。

    但由于谷歌会在人们搜索 MSBuild 和 VS Build(而不是 Buildpipeline 任务)之间的区别时突出显示这个问题,所以我想添加来自 Microsoft 的这句话:

    Visual Studio 构建与 MSBuild.exe 构建

    项目构建时间之间存在一些显着差异 Visual Studio 与直接调用 MSBuild 时的对比,无论是通过 MSBuild 可执行文件,或者当您使用 MSBuild 对象模型启动时 一个构建。 Visual Studio 管理 Visual 的项目构建顺序 工作室建造;它只在单个项目级别调用 MSBuild, 当它发生时,几个布尔属性 (BuildingInsideVisualStudio, BuildProjectReferences) 设置为 显着影响 MSBuild 的功能。在每个项目内部,执行 发生与通过 MSBuild 调用时相同,但不同之处在于 与引用的项目一起出现。在 MSBuild 中,当引用项目时 是必需的,实际发生了构建;也就是说,它运行任务和 工具,并生成输出。当 Visual Studio 生成发现 引用的项目,MSBuild 只返回预期的输出 参考项目;它让 Visual Studio 控制构建 那些其他项目。 Visual Studio 确定构建顺序和 单独调用 MSBuild(根据需要),完全在 Visual 工作室的控制。

    当使用解决方案调用 MSBuild 时,会出现另一个差异 文件,MSBuild 解析解决方案文件,创建标准 XML 输入 文件,对其进行评估,并将其作为项目执行。解决方案构建 在任何项目之前执行。从 Visual Studio 构建时,没有 发生这种情况; MSBuild 永远不会看到解决方案文件。作为一个 结果,解决方案构建定制(使用 before.SolutionName.sln.targets 和 after.SolutionName.sln.targets) 仅适用于 MSBuild.exe 或对象模型驱动,不适用于 Visual Studio 构建。

    来源:docs.microsoft.com

    【讨论】:

      猜你喜欢
      • 2014-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多