Erstellen eines Fehlers in Azure DevOps Services mithilfe von .NET-Clientbibliotheken

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Das Erstellen eines neuen Fehlers (oder einer beliebigen Arbeitsaufgabe) ist ziemlich direkt vorwärts. Sie müssen nur die Feldwerte festlegen und ein JSON-Patch-Objekt an den REST-Endpunkt senden.

Voraussetzungen

Sie müssen folgendes haben, bevor Sie eine Arbeitsaufgabe erstellen können.

Erstellen eines C#-Projekts in Visual Studio

Weitere Informationen zur C#-Programmierung in Visual Studio finden Sie in der Visual Studio C#-Programmierdokumentation.

C#-Codeinhalt

Im folgenden Codebeispiel werden einige Dinge ausgeführt:

  1. Authentifizierung
    1. Erstellen von Anmeldeinformationen mit Ihrem PAT
    2. Erstellen einer VSS Verbinden ion mit Ihrem Azure DevOps Services-URI und den Anmeldeinformationen
  2. Abrufen des Clients mit Ihrem VSS Verbinden ion
  3. Erstellen des Fehlers
    1. Erstellen eines Arrays von Objekten zum Festlegen der Feldwerte
    2. Konvertieren dieses Arrays in ein serialisiertes JSON-Objekt
    3. Senden des serialisierten JSON-Objekts an den REST-Endpunkt

C#-Codeausschnitt

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Microsoft.TeamFoundation.WorkItemTracking.WebApi;
using Microsoft.TeamFoundation.WorkItemTracking.WebApi.Models;
using Microsoft.VisualStudio.Services.Common;
using Microsoft.VisualStudio.Services.WebApi.Patch.Json;
using Microsoft.VisualStudio.Services.WebApi.Patch;
using Microsoft.VisualStudio.Services.WebApi;
using System.Net.Http.Headers;
using System.Net.Http;
using Newtonsoft.Json;

 
public class CreateBug 
{
    readonly string _uri;
    readonly string _personalAccessToken;
    readonly string _project;

    /// <summary>
    /// Constructor. Manually set values to match your organization. 
    /// </summary>
    public CreateBug()
    {
        _uri = "https://dev.azure.com/{orgName}";
        _personalAccessToken = "personal access token";
        _project = "project name";
    }

    /// <summary>
    /// Create a bug using the .NET client library
    /// </summary>
    /// <returns>Microsoft.TeamFoundation.WorkItemTracking.WebApi.Models.WorkItem</returns>    
    public WorkItem CreateBugUsingClientLib()
    {
        Uri uri = new Uri(_uri);
        string personalAccessToken = _personalAccessToken;
        string project = _project;

        VssBasicCredential credentials = new VssBasicCredential("", _personalAccessToken);
        JsonPatchDocument patchDocument = new JsonPatchDocument();

        //add fields and their values to your patch document
        patchDocument.Add(
            new JsonPatchOperation()
            {
                Operation = Operation.Add,
                Path = "/fields/System.Title",
                Value = "Authorization Errors"
            }
        );

        patchDocument.Add(
            new JsonPatchOperation()
            {
                Operation = Operation.Add,
                Path = "/fields/Microsoft.VSTS.TCM.ReproSteps",
                Value = "Our authorization logic needs to allow for users with Microsoft accounts (formerly Live Ids) - http:// msdn.microsoft.com/library/live/hh826547.aspx"
            }
        );

        patchDocument.Add(
            new JsonPatchOperation()
            {
                Operation = Operation.Add,
                Path = "/fields/Microsoft.VSTS.Common.Priority",
                Value = "1"
            }
        );

        patchDocument.Add(
            new JsonPatchOperation()
            {
                Operation = Operation.Add,
                Path = "/fields/Microsoft.VSTS.Common.Severity",
                Value = "2 - High"
            }
        );
        VssConnection connection = new VssConnection(uri, credentials);
        WorkItemTrackingHttpClient workItemTrackingHttpClient = connection.GetClient<WorkItemTrackingHttpClient>();

        try
        {
            WorkItem result = workItemTrackingHttpClient.CreateWorkItemAsync(patchDocument, project, "Bug").Result;

            Console.WriteLine("Bug Successfully Created: Bug #{0}", result.Id);

            return result;
        }
        catch (AggregateException ex)
        {
            Console.WriteLine("Error creating bug: {0}", ex.InnerException.Message);
            return null;
        }
    }
}

Nächste Schritte