.NET istemci kitaplıklarını kullanarak Azure DevOps Services'te hata oluşturma

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

Yeni bir hata (veya herhangi bir iş öğesi) oluşturmak oldukça kolaydır. Yalnızca alan değerlerini ayarlamanız ve REST uç noktasına bir JSON-Patch nesnesi göndermeniz yeterlidir.

Önkoşullar

bir iş öğesi oluşturabilmeniz için önce aşağıdakilere sahip olmanız gerekir.

  • Azure DevOps Services'deki bir kuruluş. Yoksa ücretsiz olarak oluşturabilirsiniz
  • Kişisel Erişim Belirteci, nasıl oluşturulacağını öğrenin
  • C# geliştirme ortamı, Visual Studio'yu kullanabilirsiniz

Visual Studio'da C# projesi oluşturma

Visual Studio'da C# programlama hakkında bilgi edinmek için Visual Studio C# programlama belgelerini bulun

C# kod içeriği

Aşağıdaki kod örneğinde gerçekleşen birkaç şey vardır:

  1. Kimlik doğrulama
    1. PAT'nizi kullanarak kimlik bilgileri oluşturma
    2. Azure DevOps Services URI'niz ve kimlik bilgilerinizle VSS Bağlan ion oluşturma
  2. VSS Bağlan ion kullanarak istemciyi alma
  3. Hata oluşturma
    1. Alan değerlerini ayarlamak için bir nesne dizisi oluşturma
    2. Bu diziyi serileştirilmiş json nesnesine dönüştürme
    3. Serileştirilmiş json nesnesini REST uç noktasına gönderin

C# kod parçacığı

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

Sonraki adımlar