TFS二次開發系列:三、TFS二次開發的第一個實例


  首先我們需要認識TFS二次開發的兩大獲取服務對象的類。

  他們分別為TfsConfigurationServer和TfsTeamProjectCollection,他們的不同點在於可以獲取不同的TFS API服務類。他們的區別如下:

 

服務

TfsConfigurationServer

(服務器級別)

TfsTeamProjectCollection

(集合級別)

ITeamFoundationRegistry

選中標記

選中標記

IIdentityManagementService

選中標記

選中標記

ITeamFoundationJobService

選中標記

選中標記

IPropertyService

選中標記

選中標記

IEventService

選中標記

選中標記

ISecurityService

選中標記

選中標記

ILocationService

選中標記

選中標記

TswaClientHyperlinkService

選中標記

選中標記

ITeamProjectCollectionService

選中標記

 

IAdministrationService

選中標記

選中標記

ICatalogService

選中標記

 

VersionControlServer

 

選中標記

WorkItemStore

 

選中標記

IBuildServer

 

選中標記

ITestManagementService

 

選中標記

ILinking

 

選中標記

ICommonStructureService3

 

選中標記

IServerStatusService

 

選中標記

IProcessTemplates

 

選中標記

   基本上我們可以通過上面兩個類對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文件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM