Tworzenie usterki w usługach Azure DevOps Services przy użyciu bibliotek klienckich platformy .NET

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

Tworzenie nowej usterki (lub dowolnego elementu roboczego) jest dość proste. Wystarczy ustawić wartości pól i wysłać obiekt JSON-Patch do punktu końcowego REST.

Wymagania wstępne

Aby można było utworzyć element roboczy, musisz mieć następujące elementy.

  • Organizacja w usługach Azure DevOps Services. Jeśli go nie masz, możesz go utworzyć bezpłatnie
  • Osobisty token dostępu— dowiedz się, jak go utworzyć
  • Środowisko programistyczne w języku C#, w którym można używać programu Visual Studio

Tworzenie projektu w języku C# w programie Visual Studio

Aby dowiedzieć się więcej na temat programowania w języku C# w programie Visual Studio, znajdź dokumentację programowania w języku C# programu Visual Studio

Zawartość kodu w języku C#

W poniższym przykładzie kodu występuje kilka rzeczy:

  1. Uwierzytelniania
    1. Tworzenie poświadczeń przy użyciu osobistego tokenu dostępu
    2. Tworzenie usługi VSS Połączenie ion przy użyciu identyfikatora URI usługi Azure DevOps Services i poświadczeń
  2. Pobieranie klienta przy użyciu usługi VSS Połączenie ion
  3. Tworzenie usterki
    1. Tworzenie tablicy obiektów w celu ustawienia wartości pól
    2. Konwertowanie tej tablicy na serializowany obiekt json
    3. Wyślij ten serializowany obiekt json do punktu końcowego REST

Fragment kodu w języku C#

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;
        }
    }
}

Następne kroki