65.9K
CodeProject 正在变化。 阅读更多。
Home

Team Foundation Server (TFS) API 包装器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.62/5 (7投票s)

2010年6月23日

CPOL

3分钟阅读

viewsIcon

73251

downloadIcon

2270

一个简单的包装器,封装了 Microsoft Team Foundation Server (TFS) 客户端 API 的公开函数。

ZetaTfsApiWrapper/team-foundation-server-wizard-04.png

引言

在本文中,我想向您介绍一个小的 .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
© . All rights reserved.