我需要使用C#以编程方式获取Team Foundation Server列表。
TfsTeamProjectCollection
对象需要这样做。
答案 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);