【问题标题】:TFS rest API- Create Work ItemTFS 休息 API - 创建工作项
【发布时间】:2019-01-24 23:28:17
【问题描述】:

我正在尝试使用 Microsoft.TeamFoundationService.Client api 创建一个工作项,但每次我尝试创建工作项时都会失败并出现错误

新的工作项更新必须指定区域和迭代节点 ID。

到目前为止,我有以下内容:

var connection = new VssConnection(baseUrl, vssBasicCredential);
var witClient = connection.GetClient<WorkItemTrackingHttpClient>();

var patchDocument = new JsonPatchDocument();
patchDocument.Add(new JsonPatchOperation
{
  Operation = Operation.Add,
  Path = "/Fields/System.Title",
  Value = title
});

...
var newlyCreatedUserStory = witClient.CreateWorkItemAsync(patchDocument,
                                                          testProject.Id,
                                                          "User Story").Result;

此时抛出异常。我也尝试添加 Area 和 Interation 节点的值:

        patchDocument.Add(new JsonPatchOperation
        {
            Operation = Operation.Add,
            Path = "/Fields/System.AreaId",
            Value = parentWorkItem.Fields["System.AreaId"].ToString()
        });
        patchDocument.Add(new JsonPatchOperation
        {
            Operation = Operation.Add,
            Path = "/Fields/System.AreaPath",
            Value = parentWorkItem.Fields["System.AreaPath"].ToString()
        });
        patchDocument.Add(new JsonPatchOperation
        {
            Operation = Operation.Add,
            Path = "/Fields/System.TeamProject",
            Value = parentWorkItem.Fields["System.TeamProject"].ToString()
        });
        patchDocument.Add(new JsonPatchOperation
        {
            Operation = Operation.Add,
            Path = "/Fields/System.NodeName",
            Value = parentWorkItem.Fields["System.NodeName"].ToString()
        });
        patchDocument.Add(new JsonPatchOperation
        {
            Operation = Operation.Add,
            Path = "/Fields/System.AreaLevel1",
            Value = parentWorkItem.Fields["System.AreaLevel1"].ToString()
        });
        patchDocument.Add(new JsonPatchOperation
        {
            Operation = Operation.Add,
            Path = "/Fields/System.IterationId",
            Value = parentWorkItem.Fields["System.IterationId"].ToString()
        });
        patchDocument.Add(new JsonPatchOperation
        {
            Operation = Operation.Add,
            Path = "/Fields/System.IterationPath",
            Value = parentWorkItem.Fields["System.IterationPath"].ToString()
        });
        patchDocument.Add(new JsonPatchOperation
        {
            Operation = Operation.Add,
            Path = "/Fields/System.IterationLevel1",
            Value = parentWorkItem.Fields["System.IterationLevel1"].ToString()
        });

有什么想法吗?提前致谢。

【问题讨论】:

  • 没有Microsoft.TeamFoundationService.Client api,你在使用Microsoft.TeamFoundationServer.Client .NET 客户端库visualstudio.com/en-us/docs/integrate/get-started/… 吗?您使用的是哪个 TFS 版本?这与 TFS 2015 及更高版本以及 Visual Studio Team Services 集成。
  • 你是对的 - 抱歉打错了。我正在使用 Visual Studio 在线进行测试,但它将与 Visual Studio Team Services Server 2015 一起使用。我可能应该补充一点,我正在.Net 核心中开发它,所以我使用的是 Microsoft.TeamFoundationServer.Clientlibrary 的 15.113.0-preview 版本跨度>

标签: c# tfs


【解决方案1】:

变化

Path = "/Fields/System.Title"

Path = "/fields/System.Title"

为我做了诀窍。

【讨论】:

  • 谢谢,这解决了我的问题,只需要使用字段而不是字段
【解决方案2】:

如果您要使用 TFS2015。建议您不要使用 VSTS 进行测试。两者之间可能存在一些差异,例如 API 版本。

据我所知,创建工作项不需要指定区域和迭代节点 ID。只需要标题。示例代码可以参考官方教程:Create a work item

由于您使用的是预览库,您也可以尝试使用稳定版本,例如Microsoft Team Foundation Server Client 14.102.0

另外添加一个类似的问题供您参考:TFS2015 REST API Library: Create a new Work Item

【讨论】:

  • 嗯,我有一种感觉可能是这种情况——我真的很想摆脱调用 HttpClient 但我想我可能不得不这样做。感谢您提供答案。
猜你喜欢
  • 2018-11-03
  • 2020-01-07
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 2010-10-10
  • 2017-07-20
  • 2012-02-26
  • 1970-01-01
相关资源
最近更新 更多