2009-01-22 116 views
10

我想知道是否有方法可以列出包含在tfs團隊項目中的所有'文件'。我想要做的是搜索特定名稱的文件,這些文件在分支($/MyTeamProject/Main/Build/instruction.xml和$/MyTeamProject/Branches/Release_1.0)引起的TFS中沒有固定路徑。一旦找到一個文件,我想操縱它。如何使用tfs api列出團隊項目的文件?

我猜我們談論的是項目,而不是傳統的文件,因此這可能有點棘手?

我看過一些操作文件的例子,但到目前爲止所有的例子都有固定路徑。

回答

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將制約發現那些特定文件名的項目。我只有這個示例輸出所有找到的文件的服務器路徑。

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

version.GetItems(@ 「$ \項目名」,RecursionType.Full) 這也適用於:version.GetItems(@「$ /項目名「,RecursionType.Full)---所以斜槓或反斜槓都可以工作 – 2015-10-29 14:55:38