使用 (XALM) 构建过程模板在 TFS 2013 中将工具路径设置为 MSBuild 2019

Posted

技术标签:

【中文标题】使用 (XALM) 构建过程模板在 TFS 2013 中将工具路径设置为 MSBuild 2019【英文标题】:Set toolpath to MSBuild 2019 in a TFS 2013 using (XALM) build process templates 【发布时间】:2020-10-27 17:57:06 【问题描述】:

TL;DR:安装干净的 Windows 构建服务器、MS Build Tools 2019 和 TFS 2013。 构建日志说 异常消息:找不到文件:MSBuild.exe(类型 FileNotFoundException)

如何在 TFS 2013 上的 XAML 文件中设置 MSBUILD 工具路径,配置为使用 MSBuild 2019 并在我的开发盒上安装 Visual Studio 2019 Enterprise。

请提供适用于 TFS2013(更新 3)的完整 XAML 文件,并带有明确的自定义 msbuild 路径。

更多信息:

我们为运行 2013 版的 TFS 构建例程设置了多服务器。

一个控制器和几个代理服务器到处都是,没什么特别的。 最近我为 GUI 测试添加了另一个 - 我需要代理服务处于交互模式。

到目前为止的步骤:

安装的 TFS 2013 包括两个代理 - 链接到主控制器。 我安装了 Build Tools 2019 版 我添加了标签来控制构建分发。

激活一个构建,剩下的就是历史了。

我已经四天(令人沮丧)了 - 我已经阅读了我能找到的每一个 Stack Overflow TFS set toolpath 条目,以及一大堆奇怪的论坛,但似乎没有一个能从头开始我的痒在这里。

我什至将您看到的两条路径都添加到了 Windows 环境 PATH 变量中。我不确定这是否有任何作用。

看;每个人都在谈论 XAML 中的这个条目,上面写着 toolpath(或类似的) - 但是;我没看到。我们使用 TfvcTemplate.12.Xaml 的小改动版本。

许多人还谈到了这个用于编辑 XALM 文件的 GUI 工具,我可以在其中看到所有可用的不同选项(我想)——有人也可以帮助我吗?它肯定不能与 2019 年企业开箱即用???? 所以;我安装了这个Extension Process Template Editor,但是当我单击 XAML 文件时当然什么也没有发生,只是更多的 XML :)

我现在在新服务器上添加了一些路径,我看到安装了 msbuild.exe 的实例(请 MS/.NET 一起行动)

C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin
C:\Program Files (x86)\MSBuild\12.0\Bin

请尽量不要把它写成第一眼的重复。我知道它与其他问题相似 - 但是;魔鬼在细节中。

【问题讨论】:

【参考方案1】:

使用 (XALM) 构建过程模板在 TFS 2013 中将工具路径设置为 MSBuild 2019

如您所知,旧 Visual Studio 版本将 msbuild 安装到 C:\Program Files (x86)\MSBuild\<version>\bin 中,显然 RunMSBuild 活动使用 ToolVersion + ToolArchitecture 来计算此路径。

VS 2019 构建工具安装它 C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin 并且 RunMSBuild 无法再计算正确的路径。您不能使用旧的 DefaultTemplate12.xaml 与 VS2019 构建工具集成。

要使其工作,您可以尝试修改 TFSBuildServiceHost.exe.config,并且您必须在构建服务器上安装 VS 2019 构建工具或 VS2019 版本才能使其工作。

更多详细步骤请关注Jonesy2488在此链接中的回答:How to get VS 2017 working with TFS 2017 XAML Builds。

此外,我们也可以尝试使用 MSBuild 任务而不是 Visual Studio Build 任务,然后指定 MSBuild 16.0 的位置:

希望这会有所帮助。

【讨论】:

它解释了很多,你告诉我,设计我不能让它工作:),也不要在这方面花费更多的资源。我慢慢意识到我在用传统的方式来制作构建定义是在浪费资源,而且我越来越多地看到这个 vNext 表达式。 您正在向我展示另一个我无法重现的 GUI - 我在我们的设置中做了一些根本错误的事情。我不知道这个 MSBuild 窗口。你在哪里看到的?那是最新的 TFS gui 吗? 我将以命令行方式执行此操作 - 经过 45 秒的摆弄,执行 vstest.console 就像一个魅力。 事情是;我们被锁定在 tfs 2013,因为有人说服我们的管理层使用 Dynamics AX 2012 - 众所周知,这是 MS 发布的最复杂和最复杂的软件套件;恕我直言。我是说;在香草安装中,仅在数据库中就有超过 2500 个不同的表、vievs 等。那几乎是9000多!!!! 我现在看到您的屏幕截图来自 DEVOPS GUI。问题是关于 TFS 2013。不是 DevOps。您可以原谅,因为在提交答案之前阅读整个问题通常是规则,而不是例外:)

以上是关于使用 (XALM) 构建过程模板在 TFS 2013 中将工具路径设置为 MSBuild 2019的主要内容,如果未能解决你的问题,请参考以下文章

VS 2017 不向 TFS 2010 报告测试结果

将 TFS 构建与发布管理集成

npm install from tfs feed(在构建过程中)给出错误:无法验证

TFS 构建过程无法提取 nuget 包

使用 vNext 构建后将内部版本号与 TFS 工作项相关联

基于先前的构建在 TFS 中执行构建