#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);