Проблема подхода Дейва Тепли состоит в том, что он предполагает, что у вас уже есть экземпляр VersionControlServer
или, по крайней мере, TeamFoundationServerUri
.
Существует более мощный способ: с использованием Workstation
класса . Риччи Джан Мария написала довольно обширное сообщение в блоге на эту тему. Ниже приведен фрагмент этого поста:
Используйте класс Workstation, чтобы получить WorkspaceInfo для искомого пути, он произведет поиск в рабочих пространствах всех серверов TFS, зарегистрированных на этой рабочей станции, чтобы определить, есть ли совпадение:
Workstation workstation = Workstation.Current;
WorkspaceInfo info = workstation.GetLocalWorkspaceInfo(path);
Теперь, когда у вас есть WorkspaceInfo, вы можете подать в суд на него для подключения к TFS, информация о рабочем пространстве содержит ProjectCollectionUri для этой конкретной коллекции командных проектов. И из этого экземпляра Workspace:
TfsTeamProjectCollection collection = new TfsTeamProjectCollection(info.ServerUri);
Workspace workspace = info.GetWorkspace(collection);
Используйте коллекцию или рабочее пространство, чтобы затем получить доступ к VersionControlServer:
VersionControlServer versionControlServer = collection.GetService<VersionControlServer>();