加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

vb.net – 如何使用Visual Studio宏运行TFS工作项查询

发布时间:2020-12-17 07:28:13 所属栏目:百科 来源:网络整理
导读:我正在尝试编写一个Vistual Studio 2008宏来运行存储的TFS查询并显示结果. 以前我创建了一个查询,并将其命名为“Assigned to Me”,以显示当前分配给我的所有工作项. 而不是View-团队资源管理器,单击,单击树到我的查询,然后双击’分配给我’我想写一个宏来自
我正在尝试编写一个Vistual Studio 2008宏来运行存储的TFS查询并显示结果.
以前我创建了一个查询,并将其命名为“Assigned to Me”,以显示当前分配给我的所有工作项.
而不是View->团队资源管理器,单击,单击树到我的查询,然后双击’分配给我’我想写一个宏来自动执行这些步骤.

我提出的最好的是相当混乱:

Sub TemporaryMacro()

    DTE.Windows.Item("{131369F2-062D-44A2-8671-91FF31EFB4F4}").Activate() 'Team Explorer
    DTE.ActiveWindow.Object.GetItem("tfsserverMyProjectWork ItemsMy QueriesAssigned to Me").Select(vsUISelectionType.vsUISelectionTypeSelect)
    DTE.ActiveWindow.Object.DoDefaultAction()
    DTE.Windows.Item("{131369F2-062D-44A2-8671-91FF31EFB4F4}").Close()
    DTE.Windows.Item("Assigned to Me [Results]").Activate()

End Sub

有没有更好的办法?

解决方法

我编写了一个自定义的Windows窗体应用程序,允许我运行自己的动态查询,并创建新的或更新现有的工作项.

下面是我用来连接到TFS 2010服务器,运行查询并返回结果的代码部分的简化版本.

Imports Microsoft.TeamFoundation.Client
Imports Microsoft.TeamFoundation.WorkItemTracking.Client
Imports System.Net
Imports System.Text.RegularExpressions
Imports System.Data.SqlTypes

Public Class DNATFSProxy
    Private _teamProjectCollection As TfsTeamProjectCollection
    Private _workItemStore As WorkItemStore
    Private _projectName As String
    Private _project As Project

    Public Sub Connect()
        _teamProjectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(New Uri(_uri))
        _workItemStore = New WorkItemStore(_teamProjectCollection)
        _project = _workItemStore.Projects(_projectName)
    End Sub

    Public Sub GetWorkItems(ByVal whereClause As String)
        If _workItemStore IsNot Nothing Then
            'Attempt to get the work items
            Dim query As String = String.Format("SELECT * FROM WorkItems WHERE {0}",whereClause)

            Dim workItemCollection As WorkItemCollection = _workItemStore.Query(query)

            'Iterate through each work item
            For Each workItem As WorkItem In workItemCollection

                'Insert your custom code here
                Dim title As String = workItem.Title.ToString()

                'You can also update the work item in TFS
                workItem.Title = "New title"
                workItem.Save()
            Next
        End If
    End Sub

Public Property URI() As String
    Get
        Return _uri
    End Get
    Set(ByVal value As String)
        _uri = value
    End Set
End Property

Public Property Project() As String
    Get
        Return _projectName
    End Get
    Set(ByVal value As String)
        _projectName = value
    End Set
End Property

End Class

然后,您可以按如下方式调用此代理:

Dim proxy As New DNATFSProxy()
   proxy.URI = "http://tfs:8080/tfs/DefaultCollection"
   proxy.Project = "Your Project Name"
   proxy.Connect()
   proxy.GetWorkItems("Insert your query here")

我希望这有帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读