【问题标题】:How to list files of a team project using tfs api?如何使用 tfs api 列出团队项目的文件?
【发布时间】:2010-10-02 22:54:01
【问题描述】:

我想知道是否有办法列出 tfs 团队项目中包含的所有“文件”。我的目标是搜索特定名称的文件,这些文件在 TFS 中没有由分支引起的固定路径($/MyTeamProject/Main/Build/instruction.xml 和 $/MyTeamProject/Branches/Release_1.0)。找到文件后,我想对其进行操作。

我猜我们谈论的是团队项目中包含的实体而不是传统文件,因此这可能有点棘手?

我见过一些用于操作文件的示例,但到目前为止所有示例都有固定路径。

【问题讨论】:

    标签: c# api tfs


    【解决方案1】:

    这不是一个不同的答案,而只是 Vengafoo 代码的升级。 TeamFoundationServer 类在 2011 年已过时(不确定何时发生,我只知道它现在已过时)。 Vengafoo 的代码来自 2009 年,所以这是有道理的。将 TfsTeamProjectCollection 类与 TfsTeamProjectCollectionFactory 工厂类一起使用。

    这里是升级,只改一行:

    //TeamFoundationServer server = new TeamFoundationServer("server");
    TfsTeamProjectCollection server = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://tfsServerURI:8080/tfs/"));
    
    VersionControlServer version = server.GetService(typeof(VersionControlServer)) as VersionControlServer;
    
    ItemSet items = version.GetItems(@"$\ProjectName", RecursionType.Full);
    //ItemSet items = version.GetItems(@"$\ProjectName\FileName.cs", RecursionType.Full);
    
    foreach (Item item in items.Items)
    {
        System.Console.WriteLine(item.ServerItem);
    } 
    

    【讨论】:

    • version.GetItems(@"$\ProjectName", RecursionType.Full) 这也有效:version.GetItems(@"$/ProjectName", RecursionType.Full) ---所以斜杠或反斜杠作品
    【解决方案2】:

    这是我想出如何列出 TFS 项目的所有文件的方法:

    添加 Microsoft.TeamFoundation.Client 和 Microsoft.TeamFoundation.VersionControl.Client 作为对您项目的引用。

    为 Microsoft.TeamFoundation.Client 和 Microsoft.TeamFoundation.VersionControl.Client 添加一个使用

    TeamFoundationServer server = new TeamFoundationServer("server");
    VersionControlServer version = server.GetService(typeof(VersionControlServer)) as VersionControlServer;
    
    ItemSet items = version.GetItems(@"$\ProjectName", RecursionType.Full);
    ItemSet items = version.GetItems(@"$\ProjectName\FileName.cs", RecursionType.Full);
    
    foreach (Item item in items.Items)
    {
        System.Console.WriteLine(item.ServerItem);
    }
    

    第二个 GetItems 会将找到的项目限制为特定文件名的项目。我只是有这个示例输出所有找到的文件的服务器路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 1970-01-01
      • 2016-09-03
      • 2011-10-15
      • 1970-01-01
      • 2011-07-03
      • 2017-04-17
      相关资源
      最近更新 更多