You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于TFS SDK获取TFS2018各团队项目的构建代理ID及代理队列ID

获取TFS2018构建代理ID与代理队列ID列表(API + SDK实现)

嘿,刚好我之前在处理TFS 2018的集成需求时,折腾过这两个场景,给你整理了REST API和SDK两种方式的具体实现,直接就能用:

一、使用TFS2018 REST API获取不同团队项目的构建代理ID

要拿到每个项目的构建代理ID,得先定位到对应的代理池,再拉取池内的代理列表:

  • 第一步:先获取目标集合下的所有代理池,拿到对应项目的池ID
    请求端点:

    GET http://{tfs-server}:8080/tfs/{collection}/_apis/distributedtask/pools?api-version=4.1
    

    返回结果里的id字段就是代理池ID,你可以通过name字段匹配到项目对应的池。

  • 第二步:根据池ID获取该池下的所有构建代理
    请求端点:

    GET http://{tfs-server}:8080/tfs/{collection}/{project}/_apis/distributedtask/pools/{poolId}/agents?api-version=4.1
    

    示例curl请求(用用户名密码或者PAT认证):

    curl -u your-username:your-password-or-pat "http://tfs2018:8080/tfs/DefaultCollection/MyProject/_apis/distributedtask/pools/2/agents?api-version=4.1"
    

    返回的JSON数组中,每个代理对象的id字段就是你要的构建代理ID,同时还能看到代理的状态、名称、所属池等信息。

二、使用TFS SDK获取代理队列ID列表

如果你用.NET开发,用官方SDK会更方便,步骤如下:

  1. 先安装NuGet包:
    Install-Package Microsoft.TeamFoundationServer.Client
    
  2. 编写C#代码示例(支持PAT或域账号认证):
    using Microsoft.TeamFoundation.DistributedTask.WebApi;
    using Microsoft.VisualStudio.Services.Common;
    using System;
    using System.Linq;
    
    class TfsQueueHelper
    {
        static void Main(string[] args)
        {
            // 配置TFS地址、集合和项目信息
            var tfsUri = new Uri("http://tfs2018-server:8080/tfs/DefaultCollection");
            var targetProject = "YourTargetProject";
            
            // 用PAT认证(如果是域环境,换成VssWindowsCredential()即可)
            var credentials = new VssBasicCredential(string.Empty, "your-personal-access-token");
    
            // 创建任务客户端并获取队列列表
            using (var taskClient = new TaskAgentHttpClient(tfsUri, credentials))
            {
                // 获取指定项目的代理队列,不传项目名则返回集合下所有队列
                var queues = taskClient.GetAgentQueuesAsync(targetProject).Result;
                
                // 输出队列ID和名称
                foreach (var queue in queues)
                {
                    Console.WriteLine($"代理队列ID: {queue.Id} | 名称: {queue.Name}");
                }
            }
        }
    }
    
    代码里的TaskAgentQueue对象包含了队列的所有信息,Id就是你需要的队列ID。

内容的提问来源于stack exchange,提问作者doorman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:48:13