Fab*_*ito 14 msbuild tfs visual-studio tfs-2015
我正在创建一些构建定义,我在Visual Studio Build Step和MSBuild Build Step之间看到的唯一区别是VS Build Step将visual studio版本添加到构建中.
有人可以解释更多的差异吗?
Edd*_*SFT 14
他们几乎和丹尼尔提到的一样.主要区别在于您所发现的内容:Visual Studio Build步骤将Visual Studio版本添加到构建中.
我应该使用Visual Studio Build步骤还是MSBuild步骤?
如果要构建解决方案,在大多数情况下,应使用Visual Studio Build步骤.此步骤自动:
为您设置/ p:VisualStudioVersion属性.这迫使MSBuild使用一组特定的目标来增加成功构建的可能性.
指定MSBuild版本参数.
在某些情况下,您可能需要使用MSBuild步骤.例如,如果要构建除解决方案之外的代码项目,则应使用它.
我看到这个问题是关于两个构建任务的。
但由于当人们搜索 MSBuild 和 VS Build(而不是 Buildpipeline 任务)之间的差异时,Google 会突出显示这个问题,所以我想添加 Microsoft 的这段引用:
Visual Studio 构建与 MSBuild.exe 构建
在 Visual Studio 中生成项目与直接调用 MSBuild(通过 MSBuild 可执行文件)或使用 MSBuild 对象模型启动生成时之间存在一些显着差异。Visual Studio 管理 Visual Studio 构建的项目构建顺序;它仅在单个项目级别调用 MSBuild,并且当它调用时,会设置几个布尔属性 (
BuildingInsideVisualStudio、BuildProjectReferences),这些属性会显着影响 MSBuild 的功能。在每个项目内部,执行情况与通过 MSBuild 调用时相同,但引用的项目会有所不同。在 MSBuild 中,当需要引用的项目时,实际上会发生构建;也就是说,它运行任务和工具并生成输出。当 Visual Studio 构建找到引用的项目时,MSBuild 仅返回引用项目的预期输出;它让 Visual Studio 能够控制其他项目的构建。Visual Studio 确定构建顺序并单独调用 MSBuild(根据需要),所有这些都完全在 Visual Studio 的控制之下。当使用解决方案文件调用 MSBuild 时,会出现另一个区别,MSBuild 解析解决方案文件,创建标准 XML 输入文件,对其进行评估,并将其作为项目执行。解决方案构建在任何项目之前执行。当从 Visual Studio 构建时,这一切都不会发生;MSBuild永远看不到解决方案文件。因此,解决方案生成自定义(使用 before.SolutionName.sln.targets 和 after.SolutionName.sln.targets)仅适用于 MSBuild.exe 或对象模型驱动,不适用于 Visual Studio 生成。
| 归档时间: |
|
| 查看次数: |
7042 次 |
| 最近记录: |