Хотите получить подробную информацию о функции на основе названия функции для функции типа рабочего элемента в Azure DevOps, используя C# - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь разработать консольное приложение для извлечения подробностей рабочего элемента для типа рабочего элемента Feature в Azure DevOps.

Я хочу получить такие данные, как Feature ID, состояние. заголовок компонента будет содержать номер запроса вместе с именем запроса, я буду знать номер запроса, который находится в заголовке компонента, и я хочу получить идентификатор функции, если он существует.

Я использую этот пакет Nuget для своего кода:

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

1 Ответ

0 голосов
/ 31 января 2020

Во-первых, вам нужно подключиться к услуге с PAT и получить клиент рабочего элемента:

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

Если вы знаете идентификатор рабочего элемента, вы можете получить рабочий элемент и найдите все его поля в словаре полей:

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()));
        }
}
...