Welcome

首页 / 软件开发 / .NET编程技术 / Team System: 工作项目和撤消支持

Team System: 工作项目和撤消支持2011-11-06 msdn Brian A. Randell在本专栏 2007 年 1 月期中 (msdn.microsoft.com/msdnmag/issues/07/01/TeamSystem),我介绍了 如何创建 Microsoft® Word 2003 加载项来与 Team Foundation Server 版本控制子系统协同工作。 在 2007 年 4 月期的专栏中 (msdn.microsoft.com/msdnmag/issues/07/04/TeamSystem),我深入探讨了 工作项目跟踪子系统。在本月的专栏中,我将介绍如何向加载项添加工作项目支持。此外,您还将了解如 何添加原本应出现在第一版本加载项中的功能 — 撤消支持。

更改

在介绍加载项的第一期专栏中,我使用了 Microsoft Visual Studio® 2005 Tools for the 2007 Microsoft Office system 的测试版本(Visual Studio 2005 Tools for Office Second Edition,或简称为 VSTO 2005 SE)。从那之后,Microsoft 已经发布了最终版本,该版本支持为 Office 2003 和 2007 Office system 创建应用程序加载项。所以,如果您打算按照该专栏文章中的说明 操作,则需将该加载项的第一个“版本”升级到 RTM 版本。为此,只需在安装了 VSTO 2005 SE 的计算机上打开该解决方案并重新编译即可。一旦确认新版本可正常运行,下一步要做的就是添加撤 消挂起的更改支持。该功能要求您修改 tfsvcUtil 类和 ThisAddin 类。

在 tfsvcUtil 中,添加 一个新的共享方法 UndoPendingChanges(该方法可接受目前正在修改的文档的完整路径),并让其返回 布尔值。事实证明,该新方法的核心功能很像现有的 CheckInDocument 方法。该方法会进行检查,以确 保已与 Team Foundation Server 建立有效连接,并确认加载了有效工作区。这一步完成后,它将为传入 的文档获取一个 PendingChanges 对象数组。假设返回了一项挂起的更改,然后调用用户工作区的 Undo 方法,传入 PendingChanges 数组。这一方法应返回整数值 1。如果确实如此,该方法返回 True,否则 便使用新定义的 MSG_UNDO_NOT_ZERO 常量引发 tfsUtilException。图 1 提供了完整的方法列表。

Figure 1 tfsvcUtil 中的 UndoPendingChanges 方法

Public Shared Function UndoPendingChanges( _ ByVal docPath As String) As Boolean If serverValidated Then  If m_userWorkspace Is Nothing Then   Dim userWorkstation As Workstation = Workstation.Current   Dim docWSInfo As WorkspaceInfo = _    userWorkstation.GetLocalWorkspaceInfo(docPath)   m_userWorkspace = m_tfsVCS.GetWorkspace(docWSInfo)  End If  Dim pc As PendingChange() = _   m_userWorkspace.GetPendingChanges(docPath)  If pc IsNot Nothing AndAlso pc.Length > 0 Then   Dim retval As Integer = m_userWorkspace.Undo(pc)   " Retval should equal the number of items "undone"   If retval = 1 Then    Return True   Else    Throw New tfsUtilException(String.Format( _     MSG_UNDO_NOT_ZERO, docPath, retval))   End If  Else   Return False  End If Else  Throw New tfsUtilException(MSG_SERVER_NOT_VALIDATED) End IfEnd Function
您需要对 ThisAddIn 类进行的更改非常简单。像以前一样,由于篇幅所限,我不 再对 Word 加载项特殊代码进行更多详述(您可以将本期专栏的下载内容和以前的版本做比较,看看有些 什么变化)。毫无疑问,您必须修改该类,为工具栏添加新的“撤消挂起的更改”按钮,为新 按钮添加单击处理程序,并添加其他代码来处理状态变化以控制该按钮是否启用。基本上,“撤消 挂起的更改”按钮的启用状态应反映现有“签入”按钮的状态。