2012-06-22 5 views
2

Я играл с объектами WorkItem из схем Microsoft.TeamFoundation на C#, но задавался вопросом, знает ли кто-нибудь, как я буду ссылаться на объект типа «Area» или, если уж на то пошло, «Итерация».Список «областей», используемых в проекте TFS

Кажется, что они рассматриваются как объекты в TFS, но я не сталкивался с какой-либо информацией о том, как ссылаться на них на C#.

Вы можете фильтровать WorkItems с помощью [Area] или [Iteration] с использованием WIQL, но что, если бы я хотел заполнить ComboBox всеми областями или итерациями?

Также, как я могу просмотреть структуру базы данных проекта TFS моего рабочего места?

Спасибо, ребята,

Энди

ответ

1

Посмотрите this Blog Post. Здесь есть пример кода и демонстрационная версия.

Вот быстрый LINQPad запрос, который должен сделать эту работу (скачать VS2010/VS2012):

void Main() 
{ 
    const String CollectionAddress = "http://tfsserver:8080/tfs/MyCollection"; 
    const String ProjectName = "MyProject"; 

    using (var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(
     new Uri(CollectionAddress))) 
    { 
     tfs.EnsureAuthenticated(); 
     var server = tfs.GetService<ICommonStructureService>(); 

     var projectInfo = server.GetProjectFromName(ProjectName); 
     var nodes = server.ListStructures(projectInfo.Uri).Dump(); 

     // You should be able to re-factor this with "Iteration" 
     // for getting those too. 
     var nodesXml = server.GetNodesXml(
      nodes 
       .Where(node => node.Name == "Area") 
       .Select(node => node.Uri).ToArray(), 
      true); 

     var areaPathAndId = 
      XElement.Parse(nodesXml.OuterXml) 
      .Descendants("Node") 
      .Select(xe => new 
      { 
       Path = xe.Attribute("Path").Value, 
       ID = xe.Attribute("NodeID").Value, 
      }) 
      .Dump();   
    } 
} 
+0

Благодаря Дэйв. Поскольку у меня нет опыта работы с LINQ, я начал с ссылки, которую вы опубликовали. Удалось заставить его работать, но только для верхнего уровня иерархии. Я вытягиваю свои волосы, пытаясь добраться до дочерних узлов, например. для итерации: релизы/1/1.0/1.01. Я могу вернуться сюда за дополнительной помощью. – amarsha4