Как получить проекты TFS2010 из определенной коллекции

Я ищу хороший пример для работы с коллекциями, проектами и рабочими элементами TFS 2010 для начала.

Я могу перебирать коллекции и проекты, используя следующий код (спасибо оригинальному кодировщику)

Dim tfsServer As String = "http://test.domain.com:8080/tfs"
    tfsServer = tfsServer.Trim()
    Dim tfsUri As Uri
    tfsUri = New Uri(tfsServer)
    Dim configurationServer As New TfsConfigurationServer(tfsUri)
    configurationServer = TfsConfigurationServerFactory.GetConfigurationServer(tfsUri)

    ' Get the catalog of team project collections
    Dim collectionNodes As ReadOnlyCollection(Of CatalogNode)
    Dim gVar As Guid() = New Guid() {CatalogResourceTypes.ProjectCollection}
    collectionNodes = configurationServer.CatalogNode.QueryChildren(gVar, False, CatalogQueryOptions.None)

    Dim strName As New StringBuilder
    Dim strCollection As New StringBuilder

    For Each collectionNode In collectionNodes
        Dim collectionId As Guid = New Guid(collectionNode.Resource.Properties("InstanceID"))
        strName.Length = 0
        Dim teamProjectCollection As New TfsTeamProjectCollection(tfsUri)
        teamProjectCollection = configurationServer.GetTeamProjectCollection(collectionId)
        Response.Write("Collection:" & teamProjectCollection.Name & "<br/>")

        ' Get a catalog of team projects for the collection
        Dim hVar As Guid() = New Guid() {CatalogResourceTypes.TeamProject}

        Dim projectNodes As ReadOnlyCollection(Of CatalogNode)
        projectNodes = collectionNode.QueryChildren(hVar, False, CatalogQueryOptions.None)

        ' List the team projects in the collection
        For Each projectNode In projectNodes
            strName.AppendLine(projectNode.Resource.DisplayName & "<br>")
            'System.Console.WriteLine(" Team Project: " + projectNode.Resource.DisplayName)
        Next

        Response.Write(strName.ToString())

    Next

Я хочу прочитать конкретный проект из коллекции и перебрать рабочие элементы (задачи, ошибки, проблемы и т. д.). Любая помощь будет высоко оценен.

Спасибо.


person SSiddiqui    schedule 27.07.2011    source источник


Ответы (1)


Вы можете запустить любой запрос на уровне teamProjectCollection с помощью:

        WorkItemStore workItemStore = (WorkItemStore)teamProjectCollection.GetService(typeof(WorkItemStore));
        WorkItemCollection queryResults = workItemStore.Query(query);

        foreach (WorkItem workitem in queryResults)
        {
            Console.WriteLine(workitem.Title);             
        } 

Теперь вам нужно только сформулировать строку query во что-то, что даст вам то, что вам нужно.

Запросы WIQL - нравится. Это самое простое может дать вам все рабочие элементы в TeamProject:

SELECT [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State] FROM WorkItems WHERE [System.TeamProject] = @project


@project в нашем случае здесь projectNode.Resource.DisplayName

(Вы можете сохранить любой запрос, который вы графически установили в TFS, с помощью «Сохранить как» в виде файла *.wiq, а затем использовать его содержимое программно)

person pantelif    schedule 27.07.2011