Как мне получить список серверов Team Foundation Server, доступных на моем компьютере?

#c#

#c#

Вопрос:

Мне нужно получить список серверов Team Foundation Server программно с помощью C #.

Это необходимо для TfsTeamProjectCollection объекта.

Ответ №1:

Я просмотрел документацию и не смог найти ничего полезного. Я считаю, что @samy верен, и механизма обнаружения нет.

Однако, если вы запускаете это на клиентском компьютере, на котором уже установлены подключения к TFS, тогда в реестре хранится история серверов:

Расположение Visual Studio 2008:

 HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio9.0TeamFoundationServers
 

Visual Studio 2010:

 HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio10.0TeamFoundationInstances
 

Visual Studio 2012

 HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio11.0TeamFoundationInstances
 

Visual Studio 2013

 HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio12.0TeamFoundationInstances
 

Visual Studio 2015

 HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio14.0TeamFoundationInstances
 

Комментарии:

1. Или для VS2010, HKEY_CURRENT_USERSoftware Microsoft VisualStudio 10.0 TeamFoundation Instances

Ответ №2:

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

Ответ №3:

Для Visual Studio 2012 расположение в разделе реестра:

 HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio11.0TeamFoundationInstancestfs
 

Ответ №4:

Чтобы перечислить все рабочие области, которые будут возвращены «tf workspaces» (включая URI и сопоставленные пути):

 var allWorkspaceInfos = Workstation.Current.GetAllLocalWorkspaceInfo();
 

Чтобы получить рабочую область TFS, содержащую определенный каталог:

 var workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(@"C:Usersjoeytfs");
 

Я нашел это путем декомпиляции TF.exe . Но есть документация для класса Workstation.

Эти методы возвращают объекты WorkspaceInfo. Для выполнения операций управления версиями необходимо подключиться к серверу и получить объект Workspace:

 var collection = new TfsTeamProjectCollection(workspaceInfo.ServerUri);
collection.Authenticate();
var server = collection.GetService<VersionControlServer>();
var workspace = server.GetWorkspace(scriptRoot);