错误“找不到具有以下功能的代理:msbuild,visualstudio,vstest”


70

我正在使用TFS 2015设置新的构建服务器,并且在配置代理后,当我尝试将构建排队时,出现此错误:

找不到具有以下功能的代理:msbuild,visualstudio,vstest

如何解决?

Answers:


55

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


5
它可以工作,但是我想知道是否没有其他解决方法来避免在开发服务器中安装Visual Studio。谢谢
让·希门尼斯

6
不需要。没有理由不在您的构建服务器上安装Visual Studio-它不包括在许可费用中。
Daniel Mann

6
我同意,VS没有包含在“官方TFS构建部署先决条件”中,但是实际上,通过细微的看,它是....这很烦人 。msdn.microsoft.com/zh-cn/图书馆/…
rducom 2015年

3
据您所知,Community Edition是否为Build Server配置提供了必要的先决条件?
InteXX '16

17
除此之外,我发现在构建代理服务器上安装新功能后,“更新”构建的最快方法是转到管理区域(<您的tfs服务器> / tfs / _admin / _AgentPool?hubGroupId = ms.vss-web.account-admin-hub-group),选择您的代理所在的池,然后右键单击“更新所有代理”。
Dewi Rees

28

注意:首先,您可以在自己的服务器上使用社区版和TFS Express 2015(全部免费使用,最多五个用户)来完成所有这些操作-因此不必担心需要使用Visual Studio在线版本或为Visual Studio付费Studio专业版。


误解所提供的错误消息,然后尝试调试它很容易进行,这非常容易。

不幸的是,消息本身的措词很差,这才是真正的问题。

该错误消息的真正含义是:

“找不到具有以下功能的代理:msbuild,visualstudio和vstest。实际上,我实际上没有找到为所选构建队列配置的任何构建代理。”

因此,您是否认为这不适用于您,因为您刚刚创建了构建代理?

好吧,也许您做到了,但是这可能是发生了什么:

  • 您创建了一个新的池(没有其他原因,只是您认为应该这样做)。
  • 然后,您在该池下创建了一个队列。
  • 您在运行PowerShell脚本来创建代理,你以为它把它在刚刚创建的游泳池....
  • 但这并没有-它把它放在您甚至没有使用的“默认”池中。

啊哈!因此,构建时会发生以下情况:

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

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

下次,我将尝试在PowerShell配置期间更加关注此消息:

配置该代理针对哪个代理池?(默认池名称为“默认”)

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

如果您的代理商缺少某些功能的正品,则可以通过此处显示的“功能”选项卡检查您的代理商支持什么。当然msbuild, visualstudio and vstest都在这里:-)

在此处输入图片说明


此答案中的最后一个屏幕截图正是我所要的。
fujiiface

8

默认情况下,在VSO上使用新的构建系统时,它不会选择托管的构建选项,这就是我最终在Stack Overflow中的这篇文章的方式。如果您习惯使用VSO构建服务器,则需要执行以下操作:

通过转到“常规”选项卡并将“默认队列”更改为托管来创建托管构建。有关该限制及其在此处的工作方式的更多信息:https : //www.visualstudio.com/get-started/build/hosted-agent-pool


1
谢谢,这正是我需要做的。
2016年

如果您正在运行自己的TFS(包括TFS Express 2015),那么如果看不到托管的构建选项,请不要惊慌。您可以使用默认值
Simon_Weaver

8

就我而言,在安装MSBuild(https://www.visualstudio.com/downloads/,搜索“ Visual Studio 2017的构建工具”)之后,我只需要将MSBuild的路径添加到PATH环境变量中即可。直到我这样做,代理才检测到MSBuild。

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

我不必安装完整的Visual Studio IDE。为这个问题选择的答案是完全错误的...


3
我使用了稍晚些的“ Visual Studio 2019的构建工具”,我必须添加的路径是:C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin。是的,不需要完整的Visual Studio。谢谢你的提示。
布赖恩·克莱尔

0

我遇到了这个问题,事实证明我的发布过程选择了“错误的”代理。只需编辑发布并设置正确的代理队列

在此处输入图片说明


0

我正在使用Xcode构建从站来构建Xcode项目。

我最终在TFS 2015中遇到的错误消息是

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

我注册了OS X本地构建slave

在“注册代理”步骤中,我由构建代理命名:

>> Register Agent:

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

因此,我必须在构建设置中选择“ My-Xcode-Agent-Pool”作为默认队列。资料来源:Microsoft托管的代理


0

尽管先前的答案都对我没有帮助,但Simon_Weaver的帖子为我指明了正确的方向。

他提到vstest在他的列表中,但不在我的列表中。我通过添加一个名为“ vstest”的用户定义功能来修复它,该功能具有Visual Studio 2017下vstest.console.exe的完整路径。


0

您必须在构建机器(安装代理的位置)上安装相应的Visual Studio版本。这将向服务器添加所需的工具和功能。

需要Visual Studio,因为它会安装构建项目所需的所有构建目标。

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

由于您正在使用构建计算机上的Visual Studio安装来构建,因此该安装不算作附加许可证。


0

最终对我有用的是转到下载代理并运行的位置:

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

下载代理



0

以我为例,在安装MSBuild之后,重新启动所有Azure服务(在Windows服务中)并且可以正常工作。无需安装完整的Visual Studio


-2

TFS的一般解决方案:

解决构建服务器上大多数问题的常用方法是在构建服务器上安装Visual Studio和所有相关程序包。

使用VSTS时的替代解决方案

当你选择在哪里建,用“托管”,然后构建会工作。

可以在此处找到如何使其工作的指南:在Windows上为TFS 2015部署代理

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

更新:

获得vsts(azuredevops)中的功能列表后,您可能需要在构建代理计算机上安装所需的软件。

PS请注意,如果需要,您可能必须许可您的软件。


OP并未询问托管代理,他们想配置一个新的构建代理。
ssloan's

当尝试查找有关为什么“默认”选项不适用于节点/ npm构建的信息时,我找到了这个答案
dougajmcdonald
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.