首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VSTS创建新的WorkItem

VSTS创建新的WorkItem
EN

Stack Overflow用户
提问于 2016-01-15 11:26:49
回答 4查看 3.9K关注 0票数 5

我正在使用VSTS,我正在尝试创建一个新的WorkItem。但是我只能从VSTS获得一个现有的WorkItem并更新WorkItem。

代码语言:javascript
复制
        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);

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-01-21 22:28:45

你离我很近。而不是调用UpdateWorkItemAsync,而是调用UpdateWorkItemTemplateAsync。

代码语言:javascript
复制
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;
票数 6
EN

Stack Overflow用户

发布于 2016-01-20 14:07:38

他们似乎忘记了CreateWorkItemAsync方法。所有其他更新方法都有相应的Create方法。无论如何,要创建一个工作项,可以使用以下代码片段

代码语言:javascript
复制
var client = new RestClient(string.Format(
    CultureInfo.InvariantCulture,
    "https://{0}.visualstudio.com/defaultcollection/{1}/_apis/",
    "<vstsAccount>",
    "<project>"));
client.Authenticator = new HttpBasicAuthenticator("accessToken", "<accessToken>");
var json = @"[{'op': 'add','path': '/fields/System.Title','value': 'Title of your work item'}]";
var request = new RestRequest("wit/workitems/$Product Backlog Item?api-version=1.0", Method.PATCH);
request.AddParameter("application/json-patch+json", json, ParameterType.RequestBody);
request.AddHeader("Accept", "application/json");
var response = client.Execute(request);

响应将包含新工作项的json。使用它提取新项的id。

票数 4
EN

Stack Overflow用户

发布于 2016-01-15 18:12:53

您试过使用“添加”操作而不是“替换”操作吗?

另见https://www.visualstudio.com/integrate/api/wit/work-items#Createaworkitem

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34810018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档