다음을 통해 공유


.NET 클라이언트 라이브러리를 사용하여 Azure DevOps Services에서 버그 만들기

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

새 버그(또는 모든 작업 항목)를 만드는 것은 매우 간단합니다. 필드 값을 설정하고 JSON-Patch 개체를 REST 엔드포인트로 보내야 합니다.

필수 구성 요소

작업 항목을 만들기 전에 다음을 준비하십시오.

  • Azure DevOps Services의 조직입니다. 없는 경우 무료로 만들 수
  • 개인 액세스 토큰 만드는 방법을 알아보세요.
  • C# 개발 환경에서, Visual Studio을 사용할 수 있습니다.

Visual Studio에서 C# 프로젝트 만들기

Visual Studio에서 C# 프로그래밍을 배우려면 Visual Studio C# 프로그래밍 설명서을/를 찾아보세요.

C# 코드 콘텐츠

다음 코드 샘플에서는 몇 가지 상황이 발생합니다.

  1. 인증
    1. PAT를 사용하여 자격 증명 만들기
    2. Azure DevOps Services URI 및 자격 증명을 사용하여 VSSConnection을 생성하기
  2. VSSConnection을 사용하여 클라이언트 검색
  3. 버그 만들기
    1. 필드 값을 설정하는 개체 배열 만들기
    2. 해당 배열을 직렬화된 json 개체로 변환
    3. 직렬화된 json 개체를 REST 엔드포인트로 보내기

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

다음 단계