Teilen über


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 eines beliebigen Arbeitsgegenstands) ist ziemlich einfach. Sie müssen nur die Feldwerte festlegen und ein JSON-Patch-Objekt an den REST-Endpunkt senden.

Voraussetzungen

Stellen Sie sicher, dass Sie Folgendes haben, bevor Sie eine Arbeitsaufgabe erstellen können.

Erstellen eines C#-Projekts in Visual Studio

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

C#-Codeinhalt

Im folgenden Codebeispiel geschehen einige Dinge:

  1. Authentifizierung
    1. Erstellen von Berechtigungsnachweisen mit Ihrem PAT
    2. Erstellen einer VSSConnection mit Ihrer Azure DevOps Services URI und den Anmeldeinformationen
  2. Abrufen des Clients über Ihre VSSConnection
  3. Erstellen des Fehlers
    1. Erstellen eines Arrays von Objekten zum Festlegen der Feldwerte
    2. Konvertiere dieses Array 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