Team Foundation Server (TFS) API 包装器
一个简单的包装器,封装了 Microsoft Team Foundation Server (TFS) 客户端 API 的公开函数。
引言
在本文中,我想向您介绍一个小的 .NET 封装类库,它封装了 Microsoft Team Foundation Server (TFS) 客户端 API 的几个公开类。
为什么要在封装之上开发封装?
您可能想知道为什么我要在 TFS 已经封装的 SOAP 接口之上开发封装库。
连接和与 TFS 通信的最初要求是当我开发我们的 测试管理环境 Zeta Test 的 TFS 集成时。 该应用程序使测试人员和测试经理能够创建和管理测试用例,并管理黑盒测试、白盒测试和回归测试。 一位客户提出了将他们现有的 TFS 数据库连接到 Zeta Test 的需求。
在计划开发的增强功能时,我希望 100% 确保没有安装 TFS Explorer(用于连接到 TFS 的客户端运行时)的其他客户端仍然能够使用我们的应用程序。 因此,TFS 客户端库和我们的主要应用程序之间不应存在依赖关系。
因此,我创建了封装,它是唯一引用 TFC 客户端 API 库的程序集。
封装的特性
API 封装是 TFS 客户端 API 函数的几个函数的封装,这些函数处理 工作项跟踪架构。
提供以下主要类
FieldController
FieldDefinitionController
ProjectController
ServerConfiguration
ServerController
StoredQueryController
TfsAllowedValuesCollection
TfsAttachment
TfsAttachmentCollection
TfsField
TfsFieldCollection
TfsFieldDefinition
TfsFieldDefinitionCollection
TfsFieldFilter
TfsFieldFilterList
TfsLink
TfsLinkCollection
TfsProject
TfsProjectCollection
TfsRegisteredLinkType
TfsRegisteredLinkTypeCollection
TfsRevision
TfsRevisionCollection
TfsServer
TfsStoredQuery
TfsStoredQueryCollection
TfsTeamFoundationServer
TfsWorkItem
TfsWorkItemCollection
TfsWorkItemStore
TfsWorkItemType
TfsWorkItemTypeCollection
WorkItemController
WorkItemTypeController
这些类可用于与 Microsoft TFS 通信。 文章顶部的屏幕截图提供了我用它来做什么的想法。 如果您有兴趣,可以在 Picasa 上查看整个屏幕截图库。
类的使用示例
文章顶部的下载中包含一个示例项目。 以下是一些典型的使用场景。
var config = new ServerConfiguration
{
ServerUrl = @"http://ukeim-js6hkkfzx:8080/"
};
上面的代码创建一个配置类。 通常,这是您连接时的第一步。 指定连接所需的所有设置。 您甚至可以指定模拟以在不同的用户上下文中连接(通常具有更高的权限)。
接下来,您将创建一个类来连接到服务器,然后创建一个类来连接到某个项目
var serverController = new ServerController(config);
var projectController =
new ProjectController(
config,
serverController.GetAllProjects()[0]);
上面的例子创建了一个控制器来连接到服务器。 通过使用这个控制器类,您可以枚举所有项目(通过 GetAllProjects()
方法)。
使用项目控制器类,您可以查询一个或多个符合特定条件的工作项,例如
var wis1 = projectController.GetWorkItemsByTitle(@"Set up");
foreach (var workItem in wis1)
{
Console.WriteLine(@" " + workItem.Title)
}
您也可以查询某个字段定义,如下所示
var fd1 = projectController.Project.Store.GetFieldDefinition(-3);
var fd2 = projectController.Project.Store.GetFieldDefinition(10004);
var fd3 = projectController.Project.Store.GetFieldDefinition("ID");
var fd4 = projectController.Project.Store.GetFieldDefinition("Issue");
有关更多示例,请参见测试项目和库本身的源文件。
我学到的东西
在开始这个项目之前,我没有任何使用 TFS 的经验,但我真的很喜欢使用 TFS 客户端 API 是多么容易。 该结构记录得非常好,而且易于理解。
事实上,到目前为止,最困难的部分是设置 TFS 本身。 我最终得到了一台可以工作的 VMware 机器,希望我永远不必再次配置它。
摘要
在本文中,我介绍了一个封装了多个 Microsoft Team Foundation Server 函数的库。 我还向您简要概述了如何使用该库。
如果您有任何问题、建议或想报告问题,我很乐意收到您的来信! 请使用本文底部的讨论区。
历史
- 2010-06-23 - 首次发布到 CodeProject.com