2016-10-11 1 views
0

Я пытаюсь получить доступ к учетной записи TFS (с программным использованием TFS SDK), чтобы получить информацию, такую ​​как имена проектов, имена рабочих элементов и время разработки для каждого рабочий элемент.Программный доступ к учетной записи TFS для получения имен проектов и рабочих элементов

Мне не удалось получить информацию о проекте или рабочем элементе, но я смог пройти аутентификацию и получить доступ к TFS, используя класс TfsTeamProjectCollection.

Однако, используя класс TfsConfigurationServer, я никогда не мог аутентифицироваться на сервере. Жаль, потому что большинство примеров, которые я видел в Интернете, используют этот класс TfsConfigurationServer.

код, который позволяет мне получить доступ к TFS:

// Connect to Team Foundation Server. 
NetworkCredential netCred = new NetworkCredential("[email protected]", "myPassword"); 
BasicAuthCredential basicCred = new BasicAuthCredential(netCred); 
TfsClientCredentials tfsCred = new TfsClientCredentials(basicCred); 
tfsCred.AllowInteractive = false; 

TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri("https://tfs.gfi.pt:4430/tfs/gfi/"),tfsCred); 

tpc.Authenticate(); // This one works, and when I enter tpc I can see I am correctly signed-in in TFS (I can for instance check my full name) 

ITeamProjectCollectionService projCollect = tpc.GetService<ITeamProjectCollectionService>(); //returns null :(

У меня есть 2 вопроса:

  1. В чем разница между TfsConfigurationServer и TfsTeamProjectCollection? Я знаю, что первое приводит меня к серверному уровню, а второе - к уровню коллекции, но что такое серверный уровень и уровень сбора?
  2. Почему я не могу получить projectCollection, когда я полностью способен выполнить вход (почему последняя строка возвращает null, когда я уверен, что у меня есть 2 проекта в TFS)?
+1

Возможно, вам это поможет: http://stackoverflow.com/questions/39829535/how-to-access-team-project-list-or-git-project-list-using-tfs-rest-api/39854769 # 39854769 –

ответ

0

Я только что выяснил, в чем проблема. Мне просто нужно, чтобы заменить последнюю строку:

ITeamProjectCollectionService projCollect = tpc.GetService<ITeamProjectCollectionService>(); //returns null :(

By:

// Get the catalog of team project collections 
ReadOnlyCollection<CatalogNode> collectionNodes = tpc.CatalogNode.QueryChildren(
new [] { CatalogResourceTypes.TeamProject}, 
false, CatalogQueryOptions.None); 

// List the team project collections 
foreach (CatalogNode collectionNode in collectionNodes) 
{ 
    Console.WriteLine(collectionNode.Resource.DisplayName); 
} 
1

Что касается вопроса # 1, вы можете найти некоторые Whys в Introducing the TfsConnection, TfsConfigurationServer and TfsTeamProjectCollection Classes. Вскоре вы можете иметь множество пользовательских баз данных, т. Е. Коллекцию, управляемую одним экземпляром TFS, то есть сервером.

+0

Хороший совет @ Гилуа, спасибо! –

Смежные вопросы