2016-10-10 21 views
1

Мне нужно все Поля для коллекции проектов TFS без указания рабочего элемента. Я уже использую TFS API для нескольких других вещей, но я ничего не нашел на этом.Получить все доступные поля TFS для коллекции проекта

То, что я нашел использовал witadmin.exe ListFields команду, которая дает мне именно то, что я хочу, но как я могу получить результаты в виде коллекции в моем коде? Я не очень опытен с командами, мне просто нужны Идентификаторы полей и имена в моем коде, чтобы я мог их отображать в виде списка WPF. Мне нужно вызвать cmd.exe в моем коде, или TFS API имеет способ расширения для этого? Мой «учитель» сказал, что он должен иметь один, поскольку это можно сделать с помощью witadmin.exe.

ответ

1

witadmin.exe - это исполняемый файл .NET, поэтому вы можете использовать Reflector, dotPeek или ilSpy, чтобы увидеть, как Microsoft его реализовала. Это, скорее всего, фрагмент сообщения:

protected void InitFields() 
{ 
    if (this.fields == null) 
    { 
     FieldDefinitionCollection definitions = new FieldDefinitionCollection(this.Store, false); 
     List<FieldDefinition> list = new List<FieldDefinition>(definitions.Count); 
     Dictionary<string, FieldDefinition> dictionary = new Dictionary<string, FieldDefinition>(definitions.Count, this.Store.ServerStringComparer); 
     for (int i = 0; i < definitions.Count; i++) 
     { 
      FieldDefinition item = definitions[i]; 
      if (!item.IsInternal) 
      { 
       list.Add(item); 
       dictionary[item.ReferenceName] = item; 
       dictionary[item.Name] = item; 
      } 
     } 
     list.Sort(new FieldComparer(this.Store.ServerStringComparer)); 
     this.fields = list; 
     this.fieldsMap = dictionary; 
    } 
} 

Он будет генерировать список всех доступных полей в коллекции.

this.Store является примером WorkItemStore.

+0

Понятно, я не думал, что вы можете посмотреть в исполняемый файл. Что такое FieldComparer? Я не могу найти этот тип. WorkItemStore я могу получить, но не FieldComparer. – tweedledum11

+0

Я не знаю, когда я пытаюсь построить проект, он не может найти тип или пространство имен FieldComparer. Как компилятор найдет его? Нужна ли мне эталонная ссылка? – tweedledum11

+0

Могу ли я не просто игнорировать словарь и FieldComparer и возвращать список? – tweedledum11