首先我们需要认识TFS二次开发的两大获取服务对象的类。

  他们分别为TfsConfigurationServer和TfsTeamProjectCollection,他们的不同点在于可以获取不同的TFS API服务类。他们的区别如下:

 

服务

TfsConfigurationServer

(服务器级别)

TfsTeamProjectCollection

(集合级别)

ITeamFoundationRegistry

TFS二次开发系列:三、TFS二次开发的第一个实例

TFS二次开发系列:三、TFS二次开发的第一个实例

IIdentityManagementService

TFS二次开发系列:三、TFS二次开发的第一个实例

TFS二次开发系列:三、TFS二次开发的第一个实例

ITeamFoundationJobService

TFS二次开发系列:三、TFS二次开发的第一个实例

TFS二次开发系列:三、TFS二次开发的第一个实例

IPropertyService

TFS二次开发系列:三、TFS二次开发的第一个实例

TFS二次开发系列:三、TFS二次开发的第一个实例

IEventService

TFS二次开发系列:三、TFS二次开发的第一个实例

TFS二次开发系列:三、TFS二次开发的第一个实例

ISecurityService

TFS二次开发系列:三、TFS二次开发的第一个实例

TFS二次开发系列:三、TFS二次开发的第一个实例

ILocationService

TFS二次开发系列:三、TFS二次开发的第一个实例

TFS二次开发系列:三、TFS二次开发的第一个实例

TswaClientHyperlinkService

TFS二次开发系列:三、TFS二次开发的第一个实例

TFS二次开发系列:三、TFS二次开发的第一个实例

ITeamProjectCollectionService

TFS二次开发系列:三、TFS二次开发的第一个实例

 

IAdministrationService

TFS二次开发系列:三、TFS二次开发的第一个实例

TFS二次开发系列:三、TFS二次开发的第一个实例

ICatalogService

TFS二次开发系列:三、TFS二次开发的第一个实例

 

VersionControlServer

 

TFS二次开发系列:三、TFS二次开发的第一个实例

WorkItemStore

 

TFS二次开发系列:三、TFS二次开发的第一个实例

IBuildServer

 

TFS二次开发系列:三、TFS二次开发的第一个实例

ITestManagementService

 

TFS二次开发系列:三、TFS二次开发的第一个实例

ILinking

 

TFS二次开发系列:三、TFS二次开发的第一个实例

ICommonStructureService3

 

TFS二次开发系列:三、TFS二次开发的第一个实例

IServerStatusService

 

TFS二次开发系列:三、TFS二次开发的第一个实例

IProcessTemplates

 

TFS二次开发系列:三、TFS二次开发的第一个实例

   基本上我们可以通过上面两个类对TFS操作所有功能点。下面我们先看看如何使用TfsTeamProjectCollection获取特定团队集合下的所有项目,并且打印出项目名称。

TFS二次开发系列:三、TFS二次开发的第一个实例
 //取出团队集合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二次开发的第一个实例

  下面的例子将获取我们整个TFS服务器的所有团队集合以及团队集合下的所有团队名称

TFS二次开发系列:三、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();
TFS二次开发系列:三、TFS二次开发的第一个实例

TFS二次开发系列:三、TFS二次开发的第一个实例

  最后本实例使用VS2012+TFS2012编写。如需源码请点击 TFSTest1.rar 下载。当然你需要引入TFS的一些API DLL文件。



本文转自程兴亮博客园博客,原文链接:http://www.cnblogs.com/chengxingliang/p/3163513.html,如需转载请自行联系原作者

相关文章: