首先咱們須要認識TFS二次開發的兩大獲取服務對象的類。node
他們分別爲TfsConfigurationServer和TfsTeamProjectCollection,他們的不一樣點在於能夠獲取不一樣的TFS API服務類。他們的區別以下:服務器
服務ide |
TfsConfigurationServerui (服務器級別)spa |
TfsTeamProjectCollection3d (集合級別)code |
---|---|---|
ITeamFoundationRegistryserver |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
基本上咱們能夠經過上面兩個類對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文件。