最初,我并没有想过要开设这么一个专栏,我是在 2004 年 2 月开始酝酿这个想法的。当时,我在位 于雷蒙德的 Microsoft 总部参与一项针对即将推出的代号为“Burton”的产品的软件设计评 审。每次评审会议上,我都会举手提出相同的问题:“有扩展点吗?”两天时间里,我总是得 到一个令我忍俊不禁的答案:“有的,Brian,你可以自定义。”Burton 就成了后来的 Visual Studio Team System,而如何对其进行自定义即是本专栏的所有内容。
首先,和许多专栏的思路一样,我将向您简要介绍如何在客户端和服务器端扩展并增强 Visual Studio Team System。接下来,我将解释如何为 Microsoft Word 构建一个插件,使您能够将 Word 文档签入、签出 Team Foundation Server 版本控制存储库。不过在开始之前,请先访问 msdn.microsoft.com/vstudio/extend 以获取 Visual Studio 2005 SDK 的副本。该 SDK 包含自定义和 扩展整个 Visual Studio 产品线的文档和示例。为了构建此插件,您需要 Visual Studio 2005 Professional(或者任何包括 Team Suite 的基于角色的 SKU)的副本、Visual Studio 2005 Tools for Office Second Edition Beta 和 Visual Studio 2005 Team Explorer。由于本专栏的内容主要是关于扩 展 Team System 的,所以我不会介绍关于将代码挂接到 Word 基础架构的具体细节,但会提供所有代码 供您参考。如果您需要有关编写 Office 插件的详细说明,请访问 msdn.microsoft.com/office/tool/vsto。
深入探讨 Team Foundation Server
开始之前, 您需要了解 Team Foundation Server 与图 1 所示的客户端插件或其他相关的客户端之间的核心交互过 程。如果您要使用 Team Foundation Server,首先需要做的是连接到一个有效服务器。为此,您必须知 道服务器名、要使用的协议(HTTP 或 HTTPS)以及端口。为了执行版本控制操作,您需要一个包含工作 文件夹的工作区。工作区代表了在 Team Foundation Server 中受版本控制的项目的客户端副本,可作为 进行工作的独立区域。在客户端计算机中,每个用户可以有多个工作区。而每个工作区支持本地文件路径 (即工作文件夹)与版本控制存储库中的路径之间的多重映射。在第一次结合 Team Foundation Server 来使用 Visual Studio 2005 中的源代码控制功能时,Team Explorer 工具会使用您的计算机名来创建一 个默认工作区。这样,插件需要执行所有这些操作,以便能够将文档放入 Team Foundation Server 版本 控制存储库或从中取出。
图 1 将 Word 文档签入 Team Foundation Server 版本控制
Microsoft 将实现 Team System 编程所需要的 API 分散放置在多个程序集中。插件与 Team Foundation Server 交互时所使用的核心 API 集包含在作为 Team Explorer 的安装部分而安装的三个程序集中。分别是 Microsoft.TeamFoundation.Client.dll、Microsoft.TeamFoundation.VersionControl.Client.dll 和 Microsoft.TeamFoundation.VersionControl.Common.dll。Team Explorer 安装应用程序将程序集安装到 全局程序集缓存 (GAC) 中。然而,安装程序不会对这些程序集进行注册,使其在 Visual Studio 2005 的“添加引用”(Add References) 对话框中显示。您需要修改 Windows 注册表,以使 “添加引用”(Add References) 对话框能显示这些程序集(请参见 support.microsoft.com/kb/306149),也可手动浏览定位这些程序集。您可以在 %Program Files% \Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies\ 位置找到可浏览的程序集的副本。