VSTS创建新的WorkItem

Tho*_*ann 5 azure-devops

我正在使用VSTS REST API,我正在尝试创建一个新的WorkItem.但我只能从VSTS获取现有的WorkItem并更新WorkItem.

        var listDoNotUpdate = new List<string>();
        listDoNotUpdate.Add("System.BoardColumn");
        listDoNotUpdate.Add("System.BoardColumnDone");
        var wi = await this.Client.GetWorkItemAsync(4000);
        wi.Fields["System.Title"] = "Test";
        wi.Fields["System.Description"] = "Test";
        wi.Fields["Microsoft.VSTS.Common.AcceptanceCriteria"] = "Test";
        var doc = new JsonPatchDocument();
        foreach (var field in wi.Fields)
        {
            if (!listDoNotUpdate.Contains(field.Key))
            {
                doc.Add(new JsonPatchOperation
                {
                    Operation = Microsoft.VisualStudio.Services.WebApi.Patch.Operation.Replace,
                    Path = string.Concat("/fields/", field.Key),
                    Value = field.Value
                });
            }
        }

        await this.Client.UpdateWorkItemAsync(doc, 4000);
Run Code Online (Sandbox Code Playgroud)

但是,我如何创建一个新的WorkItem并上传它?

小智 5

你很亲密 您需要调用UpdateWorkItemTemplateAsync,而不是调用UpdateWorkItemAsync.

var collectionUri = "https://{account}.visualstudio.com";
var teamProjectName = "{project}";
var workItemType = "{workItemType}";
var client = new WorkItemTrackingHttpClient(new Uri(collectionUri), new VssClientCredentials());

var document = new JsonPatchDocument();
document.Add(
    new JsonPatchOperation()
    {
        Path = "/fields/System.Title",
        Operation = Microsoft.VisualStudio.Services.WebApi.Patch.Operation.Add,
        Value = "Title"
    });

var wi = client.UpdateWorkItemTemplateAsync(
    document,
    teamProjectName,
    workItemType).Result;
Run Code Online (Sandbox Code Playgroud)