【问题标题】:Identify 'Current' open workspace through TFS API?通过 TFS API 识别“当前”打开的工作区?
【发布时间】:2010-09-30 03:41:42
【问题描述】:

有没有办法使用 TFS API 以编程方式确定 Visual Studio 中打开的 sln/proj 的当前工作区?我已经看到 VersionControlServer 如何检索所有已知的工作区,但有什么可以用来将其与用户当前已打开(或未打开)的内容联系起来的吗?

【问题讨论】:

    标签: api tfs


    【解决方案1】:

    Dave Teply 方法的问题在于,它假设您已经拥有一个 VersionControlServer 或至少 TeamFoundationServerUri 的实例。

    不过,还有一种更强大的方法,using the Workstation classRicci Gian Maria has written a quite extensive blog post 关于这个话题。下面的 sn-p 是那篇文章的要点:

    使用 Workstation 类获取您要查找的路径的 WorkspaceInfo,这将搜索在该工作站上注册的所有 TFS 服务器的工作区,以查看是否有匹配项:

    Workstation workstation = Workstation.Current;
    WorkspaceInfo info = workstation.GetLocalWorkspaceInfo(path);
    

    现在您有了 WorkspaceInfo,您可以将其连接到 TFS,工作区信息包含该特定团队项目集合的 ProjectCollectionUri。然后是 Workspace 实例:

    TfsTeamProjectCollection collection = new TfsTeamProjectCollection(info.ServerUri);
    Workspace workspace = info.GetWorkspace(collection);
    

    使用集合或工作区然后访问 VersionControlServer:

    VersionControlServer versionControlServer = collection.GetService<VersionControlServer>();
    

    【讨论】:

      【解决方案2】:

      实例化的VersionControlServer 对象的GetWorkspace 方法还有另一个覆盖。您可以使用 Bernhard 状态的本地路径调用 GetWorkspace,但您也可以使用工作区名称和工作区所有者来调用它。由于工作区名称默认为本地计算机名称,您通常可以使用Environment.MachineName,但总会有开发人员更改工作区名称。

      例子:

      TeamFoundationServerFactory _tfs = TeamFoundationServerFactory.GetServer(server);
                  _tfs.EnsureAuthenticated();
      
      VersionControlServer _vcs = (VersionControlServer)_tfs.GetService(typeof(VersionControlServer));
      Workspace _ws = _vcs.GetWorkspace(Environment.MachineName, Environment.UserName);
      

      【讨论】:

        【解决方案3】:

        如果您可以确定解决方案或项目文件的物理路径,那么您可以在 TFS 中查询该文件,您应该会看到哪个工作区已映射到该本地文件位置。

        【讨论】:

        • 啊。我没有意识到工作空间的映射路径必须是唯一的,但这是有道理的。太棒了,谢谢!
        猜你喜欢
        • 2019-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-19
        • 2011-12-06
        • 1970-01-01
        • 2023-03-24
        相关资源
        最近更新 更多