Visual Studio Community 2015 и TFS 2015 Express - получите связь между рабочими элементами, наборами изменений и ярлыками - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь создать приложение (VB.NET, проект Winform), которое получает, начиная с идентификатора рабочего элемента, все наборы изменений и метки, относящиеся к рабочему элементу.

Я пытался получить все данные с помощью этого кода:

Dim c As New VssCredentials()
Dim conn As New VssConnection(New Uri(URI_PROJECTS), c)

'get all changesets
Dim tfvcClient As TfvcHttpClient = conn.GetClient(Of TfvcHttpClient)
Dim changesetTemp As List(Of TfvcChangesetRef)
Dim changesetList As New List(Of TfvcChangesetRef)
Dim firstCycle As Boolean = True
Dim stopCycle As Boolean = False
Dim lastChangesetId As Integer = -1
While Not stopCycle
    If Not firstCycle Then
        Dim criteria As New TfvcChangesetSearchCriteria()
        criteria.ToId = lastChangesetId
        changesetTemp = tfvcClient.GetChangesetsAsync(project:=PROJ_NAME, top:=256, searchCriteria:=criteria).Result
        criteria = Nothing
    Else
        firstCycle = False
        changesetTemp = tfvcClient.GetChangesetsAsync(project:=PROJ_NAME, top:=256).Result
    End If
    If changesetTemp.Count > 0 Then
        If lastChangesetId = -1 Then
            changesetList.AddRange(changesetTemp)
        Else
            changesetList.AddRange(changesetTemp.GetRange(1, changesetTemp.Count - 1))
        End If
        lastChangesetId = changesetTemp.Last.ChangesetId
        If changesetTemp.Count < 256 Then
            stopCycle = True
        End If
    End If
End While

'get all work item linked to changesets
For i As Integer = 0 To changesetList.Count - 1
    Dim changeset As TfvcChangeset = tfvcClient.GetChangesetAsync(changesetList(i).ChangesetId, top:=1, includeDetails:=False, includeWorkItems:=True).Result
Next

'get all labels linked to changesets
Dim req As New TfvcLabelRequestData
req.MaxItemCount = 2000
Dim tfvcLbl As List(Of TfvcLabelRef) = tfvcClient.GetLabelsAsync(project:=PROJ_NAME, requestData:=req, top:=2000).Result
Dim item(tfvcLbl.Count - 1) As TfvcItem
For i As Integer = 0 To tfvcLbl.Count - 1
    item(i) = tfvcClient.GetLabelItemsAsync(tfvcLbl(i).Id).Result(0)
Next

Все работает, но программное обеспечение работает очень медленно, для его завершения требуется около 8 минут.

Как я могу ускорить это? В настоящее время я не нашел более быстрых функций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...