Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio Visual Studio生成步骤和MSBuild生成步骤之间的差异_Visual Studio_Tfs_Msbuild_Tfs 2015 - Fatal编程技术网

Visual studio Visual Studio生成步骤和MSBuild生成步骤之间的差异

Visual studio Visual Studio生成步骤和MSBuild生成步骤之间的差异,visual-studio,tfs,msbuild,tfs-2015,Visual Studio,Tfs,Msbuild,Tfs 2015,我正在创建一些构建定义,我看到的VisualStudio构建步骤和MSBuild构建步骤之间的唯一区别是VS构建步骤将VisualStudio版本添加到构建中 有人能解释更多的差异吗?很少。这两项任务都是开源的,它们似乎都做了或多或少相同的事情 它们几乎和丹尼尔提到的一样。主要区别正如您所发现的:VisualStudio构建步骤将VisualStudio版本添加到构建中 我应该使用Visual Studio生成步骤还是MSBuild步骤? 如果您正在构建解决方案,在大多数情况下,您应该使用 V

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


有人能解释更多的差异吗?

很少。这两项任务都是开源的,它们似乎都做了或多或少相同的事情


它们几乎和丹尼尔提到的一样。主要区别正如您所发现的:VisualStudio构建步骤将VisualStudio版本添加到构建中

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

如果您正在构建解决方案,在大多数情况下,您应该使用 VisualStudio构建步骤。此步骤将自动执行:

  • 为您设置/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, 当它这样做时,一些布尔属性 (
buildingSideVisualStudio
BuildProjectReferences
)设置为 显著影响MSBuild的功能。在每个项目内部,执行 与通过MSBuild调用时发生的相同,但不同之处在于 与引用的项目一起出现。在MSBuild中,当引用项目时 如果是必需的,则实际发生构建;也就是说,它运行任务和 工具,并生成输出。当VisualStudio生成找到 引用的项目,MSBuild仅从 参考项目;它让VisualStudio可以控制 其他项目。VisualStudio确定生成顺序和 单独(根据需要)调用MSBuild,所有调用都完全在Visual Studio下进行 工作室的控制权

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


来源:

当Microsoft拒绝更新一个不到2年的程序以适应新的visual studio版本时,您还必须使用msbuild任务。我们必须切换到MS build,因为visual studio忽略了SSDT项目之间的数据库引用。是否要求为这两个项目安装visual studio?另外MSBuild忽略解决方案配置,例如,它将在解决方案中生成所有项目,而不管是否在VS Configuration Manager UI中选中“生成”。