Как просмотреть файлы командного проекта с помощью tfs api?

Мне интересно, есть ли способ показать все "файлы", содержащиеся в проекте команды tfs. То, что я собираюсь сделать, это поиск файлов с определенным именем, которые не имеют фиксированных путей в TFS, вызванных ветвлением ($/MyTeamProject/Main/Build/instruction.xml и $/MyTeamProject/Branches/Release_1.0). Как только файл будет найден, я бы хотел его обработать.

Я предполагаю, что мы говорим о вещах, когда речь идет об объектах, содержащихся в командном проекте, а не о традиционных файлах, и поэтому это может быть немного сложнее?

Я видел несколько примеров для управления файлом, но все образцы до сих пор имеют фиксированные пути.

Ответ 1

Это не другой ответ, а просто обновление кода Vengafoo. Класс TeamFoundationServer устарел в 2011 году (не уверен, когда это произошло, я просто знаю, что он устарел на данный момент). Код Vengafoo с 2009 года, так что это имеет смысл. Вместо этого используйте класс TfsTeamProjectCollection с классом TfsTeamProjectCollectionFactory factory.

Вот обновление, только одна строка изменения:

//TeamFoundationServer server = new TeamFoundationServer("server");
TfsTeamProjectCollection server = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfsServerURI:8080/tfs/"));

VersionControlServer version = server.GetService(typeof(VersionControlServer)) as VersionControlServer;

ItemSet items = version.GetItems(@"$\ProjectName", RecursionType.Full);
//ItemSet items = version.GetItems(@"$\ProjectName\FileName.cs", RecursionType.Full);

foreach (Item item in items.Items)
{
    System.Console.WriteLine(item.ServerItem);
} 

Ответ 2

Вот как я понял, как перечислить все файлы проекта TFS:

Добавьте Microsoft.TeamFoundation.Client и Microsoft.TeamFoundation.VersionControl.Client в качестве ссылки на ваш проект.

Добавить использование для Microsoft.TeamFoundation.Client и Microsoft.TeamFoundation.VersionControl.Client

TeamFoundationServer server = new TeamFoundationServer("server");
VersionControlServer version = server.GetService(typeof(VersionControlServer)) as VersionControlServer;

ItemSet items = version.GetItems(@"$\ProjectName", RecursionType.Full);
ItemSet items = version.GetItems(@"$\ProjectName\FileName.cs", RecursionType.Full);

foreach (Item item in items.Items)
{
    System.Console.WriteLine(item.ServerItem);
}

Второй GetItems ограничит найденные элементы теми, что указаны для определенного имени файла. У меня просто этот образец выводит путь к серверу для всех найденных файлов.