2011-02-16 18 views
5

Estoy intentando escribir una macro de Vistual Studio 2008 para ejecutar una consulta TFS almacenada y mostrar los resultados. Anteriormente, he creado una consulta y la he llamado 'Asignada a mí' para mostrar todos los elementos de trabajo actualmente asignados a mí. En lugar de Ver-> Team Explorer, haga clic en, haga clic en el árbol hacia Mis consultas y luego haga doble clic en 'Asignado a mí'. Deseo escribir una macro para automatizar estos pasos.Cómo ejecuto una consulta de artículo de trabajo TFS con las macros de Visual Studio

El mejor que he llegado con es el lugar desordenado:

Sub TemporaryMacro() 

    DTE.Windows.Item("{131369F2-062D-44A2-8671-91FF31EFB4F4}").Activate() 'Team Explorer 
    DTE.ActiveWindow.Object.GetItem("tfsserver\MyProject\Work Items\My Queries\Assigned 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 

¿Hay una mejor manera?

Respuesta

2

He escrito una aplicación de formulario de Windows personalizada que me permite ejecutar mis propias consultas dinámicas y crear elementos de trabajo nuevos o actualizarlos.

A continuación se muestra una versión simplificada de una sección del código que utilizo para conectarme a nuestro servidor TFS 2010, ejecutar una consulta y obtener los resultados.

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 

A continuación, puede llamar a este proxy de la siguiente manera:

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

espero que esto ayude!

Cuestiones relacionadas