Laden...

History aka System.Rev + System.Reason auf Azure Devops ist leer (WorkItemTrackingHttpClient)

Erstellt von dr4g0n76 vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.197 Views
dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 4 Jahren
History aka System.Rev + System.Reason auf Azure Devops ist leer (WorkItemTrackingHttpClient)

Ich versuche mit folgender Methode WorkItems von Azure Devops auszulesen.
Was soweit auch funktioniert.

Allerdings ist dann die History leer.

Ich habe schon herausgefunden, wie das z.B mit Rest API (WIT) für Azure Devops funktioniert.

Aber in dem Beispiel hier, wollte ich - falls das möglich ist - nicht mehrere Dinge mischen. Sondern einfach nur die normale WebApi aus eben diesem Namespace benutzen.
Bisher habe ich aber keinen Befehl gefunden der funktioniert.


public async Task<List<WorkItem>> RunQuery(string query, params string[] fields)
{
        var uri = Connect(out var project, out var credentials);

        //create a wiql object and build our query
        Wiql wiql = new Wiql()
        {
            Query = query
        };

        //create instance of work item tracking http client
        using (WorkItemTrackingHttpClient workItemTrackingHttpClient = new WorkItemTrackingHttpClient(uri, credentials))
        {
            //execute the query to get the list of work items in the results
            WorkItemQueryResult workItemQueryResult = await workItemTrackingHttpClient.QueryByWiqlAsync(wiql);

            //some error handling                
            if (workItemQueryResult.WorkItems.Count() != 0)
            {
                //need to get the list of our work item ids and put them into an array
                List<int> list = new List<int>();
                foreach (var item in workItemQueryResult.WorkItems)
                {
                    list.Add(item.Id);
                }
                int[] resultArray = list.ToArray();

                //build a list of the fields we want to see
                //get work items for the ids found in query
                var workItems = await workItemTrackingHttpClient.GetWorkItemsAsync(resultArray, fields, workItemQueryResult.AsOf);
                return workItems;
            }

            return null;
        }
}

Weiss jemand von euch zufällig, wie man das machen kann?

Weil ansonsten gäbe es scheinbar noch die Möglichkeit für Fields System.Rev auszulesen und dann für jede Revision einfach System.Reason abzufragen.

d.h. wenn es 10 Revisionen gäbe,
wäre es 10 mal:

Pseudo Code:


string historyText = null;
for(int foractualrev=0;foractualrev<System.Rev;foractualrev++)
{
    historyText += Read(System.Reason, foractualrev) + Environment.NewLine;
}

Aber ich weigere mich momentan noch zu glauben, dass ich 10 Zugriffe hierfür extra brauchen würde.

Bestimmt habe ich einfach nur die Funktion (die ebenfalls auch NICHT-obsolet ist) übersehen.

P.S.: Wenn ich es selbst rausfinde, poste ich natürlich die Antwort hier.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 4 Jahren

Ich werds jetzt einfach mit einem anderen Befehlsset aus der Documentation von Microsoft lösen. Welches weiss ich noch nicht. Aber die Möglichkeiten sind ja da.

Deswegen kann das Thema als gelöst betrachtet werden.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.