How do I run a TFS Work Item Query with Visual Studio Macros

前端 未结 1 1226
不思量自难忘°
不思量自难忘° 2021-01-05 21:07

I\'m trying to write a Vistual Studio 2008 macro to run a stored TFS query and display the results. Previously I\'ve created a query and named it \'Assigned to Me\' to displ

1条回答
  •  隐瞒了意图╮
    2021-01-05 21:30

    I've written a custom windows form application to allow me to run my own dynamic queries, and create new or update existing work items.

    Below is a simplified version of a section of code I use to connect to our TFS 2010 server, run a query and get the results back.

    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
    

    You can then call this proxy as follows:

       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")
    

    I hope this helps!

    0 讨论(0)
提交回复
热议问题