gpt4 book ai didi

command-line - tf.exe 和 tfpt.exe 如何根据执行目录与 TFS 实例建立连接?

转载 作者:行者123 更新时间:2023-11-30 23:45:55 24 4
gpt4 key购买 nike

我正在使用 TFS 对象模型在命令行上做一些工作,并且我想重现在 tf.exe 和 tfpt.exe 中看到的工作区检测行为,而不会因为我自己的特定实现而引入工件。目前,我的脚本需要比 tf.exe 需要的更多信息——我的大量参数只是为了实例化连接。

具体来说,我必须要求用户显式传入服务器 Uri (tfsUriString) 和集合名称 (tfsCollectionName),但这似乎没有必要而且很烦人,因为 tf.exe 能够做到这一点。

    Uri tfsUri = new Uri(tfsUriString);
TfsConfigurationServer configurationServer = TfsConfigurationServerFactory.GetConfigurationServer(tfsUri);
ReadOnlyCollection<CatalogNode> collectionNodes = configurationServer.CatalogNode.QueryChildren( new[] { CatalogResourceTypes.ProjectCollection }, false, CatalogQueryOptions.None);
CatalogNode collectionNode = collectionNodes.Where(node => node.Resource.DisplayName == tfsCollectionName).SingleOrDefault();
Guid collectionId = new Guid(collectionNode.Resource.Properties["InstanceId"]);
TfsTeamProjectCollection teamProjectCollection = configurationServer.GetTeamProjectCollection(collectionId);
var vcServer = teamProjectCollection.GetService<VersionControlServer>();

可以使用哪些类和方法以与 tf.exe 相同的方式执行此检测?

最佳答案

Team Foundation Server 客户端使用工作区缓存,其中包含他们在当前计算机上使用的每个团队项目集合的所有用户工作区。 tf.exe使用此缓存来确定 TfsTeamProjectCollectionWorkspace用于命令行上给出的路径。

您可以获取缓存 WorkspaceInfo对于特定的本地路径,使用:

Workstation.Current.GetLocalWorkspaceInfo(localPath)

或者您可以通过调用获取整个工作区缓存:
Workstation.Current.GetAllLocalWorkspaceInfo()
WorkspaceInfo.ServerUri属性将包含可用于创建 TfsTeamProjectCollection 的服务器 URI和。

关于command-line - tf.exe 和 tfpt.exe 如何根据执行目录与 TFS 实例建立连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7070955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com