TFS API:二、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获取特定团队集合下的所有项目,并且打印出项目名称。
首先我们需导入一下命名空间
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.Framework.Client;
using Microsoft.TeamFoundation.Framework.Common;
using Microsoft.TeamFoundation.WorkItemTracking.Client;
using Microsoft.TeamFoundation.VersionControl.Client;
其次链接TFS
Uri tfsUri = new Uri("http://10.0.9.142:8080/tfs/web");
TfsTeamProjectCollection server = new TfsTeamProjectCollection(tfsUri);
WorkItemStore workstore = server.GetService<WorkItemStore>();
在这里我需要特别的说明一下
http://10.0.9.142:8080/tfs/web 这个地址一定要写对,有时候这个地址的确可以在浏览器打开TFS,但并不是链接TFS的地址,否则会提示这样的错误
TF31002: 无法连接到此 Team Foundation Server: http://10.0.9.142:8080/tfs/web。
Team Foundation Server URL: http://10.0.9.142:8080/tfs/web。
如何获取我们需要的正确地址,请看图。
链接上TFS以后,就可以查询很多数据了
//取出团队集合URI下的项目名称,如果团队集合为空则取默认集合下项目
Uri tfsUri = new Uri("http://10.0.9.142:8080/tfs/web ");
TfsTeamProjectCollection server = new TfsTeamProjectCollection(tfsUri);
WorkItemStore workstore = server.GetService<WorkItemStore>();
foreach (Project project in workstore.Projects)
{
Console.WriteLine("TFS集合下项目名称是:" + project.Name);
}
Console.WriteLine("---------------------------------------------------------------");
下面的例子将获取我们整个TFS服务器的所有团队集合以及团队集合下的所有团队名称