我想知道是否有办法列出tfs团队项目中包含的所有“文件”。我的目标是搜索由分支引起的TFS内没有固定路径的特定名称的文件($ / MyTeamProject / Main / Build / instruction.xml和$ / MyTeamProject / Branches / Release_1.0)。一旦找到文件,我想操纵它。
我想我们正在谈论的是在团队项目中包含的实体而不是传统文件,因此这可能有点棘手?
我看过一些用于操作文件的示例,但到目前为止所有样本都有固定的路径。
答案 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会将找到的项目限制为特定文件名。我只有这个示例输出所有找到的文件的服务器路径。