首先咱们须要认识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文件。