如何使用tfs api列出团队项目的文件?

时间:2009-01-22 16:04:56

标签: c# api tfs

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

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

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

2 个答案:

答案 0 :(得分:16)

这不是一个不同的答案,而只是升级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);
} 

答案 1 :(得分:8)

以下是我如何列出如何列出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会将找到的项目限制为特定文件名。我只有这个示例输出所有找到的文件的服务器路径。