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

我需要使用C#以编程方式获取Team Foundation Server列表。

这是TfsTeamProjectCollection对象所必需的。

我扫描了文档,找不到任何有用的东西。 我相信@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\ 

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

对于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(); var workspace = server.GetWorkspace(scriptRoot);