想要使用 C# 在 Azure DevOps 中基于工作项类型功能的功能标题获取功能详细信息#

Want to fetch feature details based on Feature title for workitem type feature in Azure DevOps using C#

我正在尝试开发一个控制台应用程序来获取 Azure DevOps 中工作项类型功能的工作项详细信息。

我想获取功能 ID、状态等详细信息。功能的标题将包含需求编号和需求名称,我将知道功能标题中的需求编号,并希望获取功能 ID(如果存在)。

我正在为我的代码使用这些 Nuget 包:

Microsoft.TeamFoundation.WorkItemTracking.WebApi;
Microsoft.VisualStudio.Services.WebApi;

首先,您必须通过 PAT 连接到服务并获取工作项客户端:

VssConnection connection = new VssConnection(new Uri(ServiceURL), new VssBasicCredential(string.Empty, PAT));
WitClient = connection.GetClient<WorkItemTrackingHttpClient>();

如果您知道工作项 ID,则可以获取工作项并在字段字典中查找其所有字段:

var wi = WitClient.GetWorkItemAsync(Id).Result;
foreach (var fieldName in wi.Fields.Keys)
Console.WriteLine(“{0,-40}: {1}”, fieldName, wi.Fields[fieldName].ToString());

如果您尝试通过标题内容查找工作项,可以使用wiql查询:

string queryWiqlList = @"SELECT [System.Id] FROM WorkItems WHERE [System.TeamProject] = 'TEAM_PROJECT_NAME' and [System.Title] Contains '<YOUR SEARCH_TEXT>' and [System.State] <> 'Removed' and [System.State] <> 'Closed'";

Wiql wiql = new Wiql();
wiql.Query = wiqlStr;
WorkItemQueryResult result = WitClient.QueryByWiqlAsync(wiql).Result;

if (result != null)
{
    if (result.WorkItems != null) // this is Flat List 
        foreach (var wiRef in result.WorkItems)
        {
            var wi = WitClient.GetWorkItemAsync(wiRef.Id).Result;
            Console.WriteLine(String.Format("{0} - {1}", wi.Id, wi.Fields["System.Title"].ToString()));
        }
}