Получение рабочих элементов и связанных с ними рабочих элементов в одном запросе с использованием API TFS

Кто-нибудь знает, можно ли получить список рабочих элементов и связанных с ними рабочих элементов за одну поездку из TFS, используя их веб-службы TFS API?

На данный момент нам нужно сделать второй звонок для каждого из рабочих элементов, сделанных во время первого вызова, и представляет проблему с производительностью.

Если это невозможно, есть ли способ заглянуть в тип связанного рабочего элемента без их извлечения (например, см., Если это задача или проблема)?

Статья, на которую вы ссылаетесь в своем ответе, представляет собой способ делать то, что вы делаете после использования WIQL . Конечно, неплохой выбор.

Другой способ, на мой взгляд, лучше всего просто генерировать графически запрос, который дает результаты, которые вы после. Вам, вероятно, нужны простые «Рабочие элементы и прямая ссылка»:
введите описание изображения здесь

Как только вы сохранили, что сможете:

  1. Откройте запрос в VS & Team Web Access
  2. Свяжите запрос с Excel и работайте с WI из Excel
  3. Поймайте результаты запроса с помощью TFS-API.

Для последней части, если ваш запрос называется «MyLinkedQuery», и он находится в разделе «Командные запросы» TeamProject «MyProj», вы можете сделать что-то вроде этого:

using System; using Microsoft.TeamFoundation.Client; using Microsoft.TeamFoundation.WorkItemTracking.Client; namespace LinkedQueryResults { class Program { static void Main() { TfsTeamProjectCollection teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://TFSURL")); var workItemStore = (WorkItemStore)teamProjectCollection.GetService(typeof(WorkItemStore)); var project = workItemStore.Projects["MyProj"]; QueryHierarchy queryHierarchy = project.QueryHierarchy; var queryFolder = queryHierarchy as QueryFolder; QueryItem queryItem = queryFolder["Team Queries"]; queryFolder = queryItem as QueryFolder; if (queryFolder != null) { var myQuery = queryFolder["MyLinkedQuery"] as QueryDefinition; if (myQuery != null) { var wiCollection = workItemStore.Query(myQuery.QueryText); foreach (WorkItem workItem in wiCollection) { Console.WriteLine(workItem.Title); } } } } } } 

Нашел статью по этой проблеме.

Он позволяет использовать древовидный запрос, в котором вы можете получить идентификаторы родительских элементов и связанные элементы в одном запросе. Используя это, второй запрос может быть использован для получения фактических подробных объектов рабочих элементов. Два вопроса для решения проблемы.

Редактировать: Я также написал сообщение об этом в своем блоге.

  • Написание BMP-изображения в чистом c / c ++ без других библиотек
  • Почему оператор присваивания копий возвращает ссылку reference / const?
  • Сбросить RTF в RichTextBox?
  • enum vs constexpr для реальных статических констант внутри classов
  • Как включить динамический массив INSIDE a struct в C?
  • IEnumerable и Recursion с возвратом доходности
  • Код .NET для отправки ZPL на принтеры Zebra
  • Расширение enums через наследование
  • Методы расширения должны быть определены в неэквивалентном статическом classе
  • Какой предпочтительный шаблон для чтения строк из файла на C ++?
  • Ввод HTML внутри Html.ActionLink (), плюс текст ссылки?
  • Давайте будем гением компьютера.