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

如何使用C#获取本地Azure DevOps现有项目的ID?

获取Azure DevOps项目ID的C#实现方案

前提准备

  • 通过NuGet安装Microsoft.VisualStudio.Services.WebApi和Microsoft.TeamFoundationServer.Client包
  • 准备本地Azure DevOps服务器地址、个人访问令牌(PAT),PAT需包含项目读取权限

核心代码实现

1. 建立服务器连接

先创建VssConnection对象完成与本地Azure DevOps服务器的连接:

using Microsoft.VisualStudio.Services.Common;
using Microsoft.VisualStudio.Services.WebApi;
using Microsoft.TeamFoundation.Core.WebApi;

// 替换为你的本地Azure DevOps服务器地址和集合名
var serverUrl = new Uri("http://your-onprem-server:8080/tfs/DefaultCollection");
// 替换为你的个人访问令牌
var pat = "your-personal-access-token";

var credentials = new VssBasicCredential(string.Empty, pat);
using var connection = new VssConnection(serverUrl, credentials);

2. 按名称查询项目ID

通过ProjectHttpClient检索指定名称的项目,直接从返回对象中提取ID:

// 获取项目管理客户端
var projectClient = connection.GetClient<ProjectHttpClient>();

// 精确查询目标项目,参数可按需调整
var targetProject = await projectClient.GetProjectAsync(
    projectName: "YourTargetProjectName",
    includeCapabilities: false,
    includeHistory: false);

if (targetProject != null)
{
    Guid projectId = targetProject.Id;
    Console.WriteLine($"目标项目ID:{projectId}");
}
else
{
    Console.WriteLine("未找到指定名称的项目");
}

3. 批量获取所有项目ID(可选)

如果需要获取服务器上所有项目的名称与ID映射,可使用以下代码:

var allProjects = await projectClient.GetProjectsStateAsync();
foreach (var project in allProjects)
{
    Console.WriteLine($"项目名称:{project.Name} | 项目ID:{project.Id}");
}

关键说明

  • GetProjectAsync返回的Project对象自带Id属性,无需额外转换
  • 本地部署的Azure DevOps(TFS)URL格式需注意,通常为http://服务器地址:端口/tfs/集合名
  • PAT权限需勾选项目和团队分类下的读取权限,否则会触发权限不足错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:42:11