Visual Studio构建步骤和MSBuild构建步骤之间的差异

时间:2016-09-23 19:00:23

标签: visual-studio tfs msbuild tfs2015

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

有人可以解释更多的差异吗?

3 个答案:

答案 0 :(得分:11)

他们几乎和丹尼尔提到的一样。主要区别在于您所发现的内容:Visual Studio Build步骤将Visual Studio版本添加到构建中。

  

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

     

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

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

  •   
  • 指定MSBuild版本参数。

  •   
     

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

答案 1 :(得分:6)

答案 2 :(得分:0)

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

但是由于当人们搜索 MSBuild 和 VS Build(而不是 Buildpipeline Tasks)之间的区别时,Google 会突出显示这个问题,我想添加来自 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