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

时间:2011-10-31 08:41:42

标签: c# tfs2008

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

TfsTeamProjectCollection对象需要这样做。

4 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

var allWorkspaceInfos = Workstation.Current.GetAllLocalWorkspaceInfo();

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

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

我是通过反编译TF.exe找到的。但是有Workstation class的文档。

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

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