如何在我的PC上获得可用的Team Foundation Server服务器列表?

本文关键字:Foundation Team Server 服务器 列表 我的 PC | 更新日期: 2023-09-27 18:12:45

我需要用c#以编程方式获得Team Foundation Server列表。

TfsTeamProjectCollection对象需要这个

如何在我的PC上获得可用的Team Foundation Server服务器列表?

我浏览了一下文档,没有找到任何有用的东西。我相信@samy是正确的,没有发现机制。

但是,如果您在已经与TFS建立连接的客户端机器上运行此命令,则注册表中会存储服务器的历史记录:

Visual Studio 2008位置:

HKEY_CURRENT_USER'Software'Microsoft'VisualStudio'9.0'TeamFoundation'Servers

Visual Studio 2010:

HKEY_CURRENT_USER'Software'Microsoft'VisualStudio'10.0'TeamFoundation'Instances'
Visual Studio 2012
HKEY_CURRENT_USER'Software'Microsoft'VisualStudio'11.0'TeamFoundation'Instances'

Visual Studio 2013

HKEY_CURRENT_USER'Software'Microsoft'VisualStudio'12.0'TeamFoundation'Instances'

Visual Studio 2015

HKEY_CURRENT_USER'Software'Microsoft'VisualStudio'14.0'TeamFoundation'Instances'

我认为跟踪服务器的责任是你的责任。据我所知,服务器没有发现选项。所以需要uri

对于Visual Studio 2012,注册表项中的位置为:

HKEY_CURRENT_USER'Software'Microsoft'VisualStudio'11.0'TeamFoundation'Instances'tfs

列出"tf workspaces"将返回的所有工作空间(包括URI和映射路径):

var allWorkspaceInfos = Workstation.Current.GetAllLocalWorkspaceInfo();

获取包含特定目录的TFS工作区:

var workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(@"C:'Users'joey'tfs");

我通过反编译TF.exe发现了这个问题。但是有关于Workstation类的文档。

这些方法返回WorkspaceInfo对象。要执行源代码控制操作,您需要连接到服务器并获得一个Workspace对象:

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