错误‘找不到具有以下功能的代理: msbuild、 Visual Studio、 vstest’

我正在使用 TFS 2015设置一个新的构建服务器,在我配置了代理之后,当我尝试对一个构建进行排队时,我得到了这个错误:

找不到具有以下功能的代理: msbuild、 Visual Studio、 vstest

这个问题怎么解决?

63626 次浏览

在生成代理上安装 VisualStudio,然后重新启动生成代理。重新启动生成代理将捕获添加的功能。

默认情况下,当在 VSO 上使用新的构建系统时,它不会选择宿主构建选项,这就是我在 Stack Overflow 中结束这篇文章的原因。如果您习惯于使用 VSO 构建服务器,以下是您需要做的:

通过转到“常规”选项卡并将“默认队列”更改为“托管”来创建托管生成。更多关于这方面的限制以及它是如何工作的: https://www.visualstudio.com/get-started/build/hosted-agent-pool

我使用 Xcode 构建从程序来构建一个 Xcode 项目。

我在 TFS 2015中得到的错误消息是

“找不到具有以下功能的代理: xcode”

我注册了 OSX 内部构建从系统

在“ Register Agent”步骤中,我按照构建代理的名称命名:

>> Register Agent:


Enter agent pool (press enter for default) > My-Xcode-Agent-Pool

因此,我必须在构建设置中选择“ My-Xcode-Agent-Pool”作为默认队列

TFS 的通用解决方案:

解决生成服务器上大多数问题的常见方法是在生成服务器上安装 VisualStudio 及所有相关包。

使用 VSTS 的替代解决方案

选择构建位置时,请使用“ Hosted” 然后构建就可以工作了。

指南如何使其工作可以在这里找到: 在 Windows 上为 TFS 2015部署一个代理

检查代理部分,其中将包含有关能力的信息。

更新:

一旦您有了 vsts (azuredevops)中的功能列表 您可能需要在生成代理机器上安装所需的软件。

注意,如果需要,您可能必须为您的 sw 颁发许可证。

注意: 首先,你可以在自己的服务器上使用社区版和 TFS Express 2015来完成这些工作(最多5个用户可以免费使用)——所以不用担心需要使用 Visual Studio 在线版或者为 Visual Studio Professional 付费。


很容易误解提供的错误消息,然后徒劳无功地试图调试它。

不幸的是,信息本身只是措辞不当,这才是真正的问题所在。

下面是错误消息 真的的含义:

”找不到具有以下功能的代理: msbuild, 视觉工作室 Vstest。 事实上,我没有找到任何为所选的构建队列配置的构建代理。”

所以你认为这不适用于你,因为你刚刚创建了一个构建代理?

好吧,也许你做到了,但事情可能是这样的:

  • 您创建了一个新池(除了您认为应该创建的原因外,没有其他原因)。
  • 然后在该池下创建一个队列。
  • 运行 PowerShell 脚本以创建代理 你假设它把它放到你刚刚创建的池子里... 。
  • 但它没有-它把它放在“默认”池,你甚至没有使用..。

啊哈! 所以当你构建的时候会发生这样的事情:

  • 从下拉列表中选择队列。
  • TFS 尝试通过查找与该队列对应的池来构建,但它在那里根本没有找到任何代理,因此您会得到一个愚蠢的无用的红鲱鱼错误消息。

当我终于意识到发生了什么时,我只是删除了我可爱的名字为 pool + 的队列,并恢复到使用默认池。

下次在 PowerShell 配置期间,我将尝试更多地关注这条消息:

针对哪个代理池配置此代理? (默认池名称为 ‘违约’)

您必须在池下创建一个队列,然后您的代理应该开始工作。

如果你有一个真正的具有某种能力是缺席你的代理,你可以检查你的代理支持通过’能力’标签显示在这里。当然 msbuild, visualstudio and vstest都在这里: -)

Enter image description here

虽然以前的答案对我都不起作用,但 Simon _ Weaver的帖子为我指明了正确的方向。

他提到 Vstest 在他的名单里,但我的名单里没有。我通过添加一个名为“ vstest”的用户定义功能,并在 Visual Studio 2017下添加到 vstest.console.exe 的完整路径来修复这个问题。

我有这个问题,结果是我的释放过程选择了“错误的”代理。只需编辑发行版并设置正确的代理队列

enter image description here

必须在生成计算机上(在其中安装了代理)安装相应的 VisualStudio 版本。这将向服务器添加所需的工具和功能。

VisualStudio 是必需的,因为它安装生成项目所需的所有生成目标。

安装后,必须重新启动代理 Windows 服务,以便刷新功能列表。

由于您正在生成计算机上使用 VisualStudio 安装进行生成,因此该安装不算作额外的许可证。

在我的例子中,在安装了 MSBuild (https://www.visualstudio.com/downloads/,搜索“ Build Tools for Visual Studio 2017”)之后,我只需要将 MSBuild 的路径添加到 PATH 环境变量。在我检测之前,代理并没有检测到 MSBuild。

C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin

我不需要安装完整的 VisualStudioIDE。这个问题的选择答案是完全错误的..。

最终我找到了下载代理的地方,然后运行:

然后从代理目录中的命令行删除 ./config.cmd,重新安装代理。

下载代理

每微软 https://msdn.microsoft.com/en-us/ie/bb399135(v=vs.94)

您必须在生成代理上安装团队在其开发计算机上使用的 VisualStudio 版本。请参见安装 VisualStudio。您还必须安装在您的开发计算机上安装的任何其他软件和组件,这些软件和组件是构建您的应用程序所必需的。

在我的例子中,在安装 MSBuild 之后,重新启动所有 Azure 服务(在 Windows 服务中) ,它就可以工作了。不需要安装完整的 VisualStudio

将它们添加为用户定义的功能,例如:

visualstudio   C:\Program Files\Microsoft Visual Studio\2022\Community


vstest         C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\TestWindow

我最初在一台没有安装 VisualStudio 的机器上安装了代理。但是,在安装 Visual Studio (然后是 Visual Studio Build Tools)、重新启动/重新创建代理、重新启动计算机等之后,我无法让代理自动检测新功能,所以我自己在 Azure DevOps 作为用户定义的功能中添加了这些功能。