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