首先我們需要認識TFS二次開發的兩大獲取服務對象的類。
他們分別為TfsConfigurationServer和TfsTeamProjectCollection,他們的不同點在於可以獲取不同的TFS API服務類。他們的區別如下:
服務 |
TfsConfigurationServer (服務器級別) |
TfsTeamProjectCollection (集合級別) |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
基本上我們可以通過上面兩個類對TFS操作所有功能點。下面我們先看看如何使用TfsTeamProjectCollection獲取特定團隊集合下的所有項目,並且打印出項目名稱。
//取出團隊集合URI下的項目名稱,如果團隊集合為空則取默認集合下項目 //Uri tfsUri = new Uri("http://pc-20130113jkun:8080/tfs/Calueng");這種將會Calueng團隊集合下項目 Uri tfsUri = new Uri("http://pc-20130113jkun:8080/tfs"); TfsTeamProjectCollection server = new TfsTeamProjectCollection(tfsUri); WorkItemStore workstore = server.GetService<WorkItemStore>(); foreach (Project project in workstore.Projects) { Console.WriteLine("DefaultCollection集合下項目名稱是:" + project.Name); } Console.WriteLine("---------------------------------------------------------------");
下面的例子將獲取我們整個TFS服務器的所有團隊集合以及團隊集合下的所有團隊名稱
//TFS配置服務獲取所有項目的名稱和所有的團隊集合名稱 TfsConfigurationServer configserver = TfsConfigurationServerFactory.GetConfigurationServer(tfsUri); ReadOnlyCollection<CatalogNode> collectNodes = configserver.CatalogNode.QueryChildren(new[] { CatalogResourceTypes.ProjectCollection }, false, CatalogQueryOptions.None); foreach (CatalogNode collect in collectNodes) { Guid collectid = new Guid(collect.Resource.Properties["InstanceId"]); TfsTeamProjectCollection teamproject = configserver.GetTeamProjectCollection(collectid); Console.WriteLine("團隊集合名稱: " + teamproject.Name); ReadOnlyCollection<CatalogNode> projNodes = collect.QueryChildren(new[] { CatalogResourceTypes.TeamProject },
false, CatalogQueryOptions.None); foreach (CatalogNode projnode in projNodes) { Console.WriteLine(" 團隊項目名稱:" + projnode.Resource.DisplayName); } } Console.ReadLine();
最后本實例使用VS2012+TFS2012編寫。如需源碼請點擊 TFSTest1.rar 下載。當然你需要引入TFS的一些API DLL文件。