我正在创建一些构建定义,我在Visual Studio Build Step和MSBuild Build Step之间看到的唯一区别是VS Build Step将visual studio版本添加到构建中。
有人可以解释更多的差异吗?
答案 0 :(得分:11)
他们几乎和丹尼尔提到的一样。主要区别在于您所发现的内容:Visual Studio Build步骤将Visual Studio版本添加到构建中。
我应该使用Visual Studio Build步骤还是MSBuild步骤?
如果您正在构建解决方案,在大多数情况下您应该使用 Visual Studio构建步骤。这一步自动:
为您设置/ p:VisualStudioVersion属性。这迫使MSBuild使用一组特定的目标来增加 成功建立的可能性。
指定MSBuild版本参数。
在某些情况下,您可能需要使用MSBuild步骤。例如,你 如果您正在构建除解决方案之外的代码项目,则应该使用它。
答案 1 :(得分:6)
很少。这两项任务都是开源的,它们似乎或多或少都是相同的东西。
https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/build/msbuild?view=vsts
https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/build/visual-studio-build?view=vsts
答案 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 构建。