C# 使用 JsonPatchDocument 更新 Azure Devops 工作项父级

Posted

技术标签:

【中文标题】C# 使用 JsonPatchDocument 更新 Azure Devops 工作项父级【英文标题】:C# Updating Azure Dev Ops WorkItem parent using JsonPatchDocument 【发布时间】:2021-11-21 09:22:27 【问题描述】:

我在创建工作项和设置正确的父值时没有问题,但我一生无法弄清楚如何在创建父项后更新它。我想要做的是将父链接的值设置为不同工作项的 url。

虽然它可能像这样简单,但我发送了operationReplace

private JsonPatchOperation GetParentPatchOperation(WorkItem item, Operation operation)
    
        var patch =
            new JsonPatchOperation()
            
                Operation = operation,
                Path = "/relations/-",
                Value = new
                
                    rel = "System.LinkTypes.Hierarchy-Reverse",
                    url = item.Url,
                    attributes = new  comment = "" 
                
            ;
        return patch;
    

ADO 给出的错误是关系的类型无法更改 - 即使需要更改的 rel 的目标是正确的索引,也会出现同样的错误。

我实际上已经找到了解决方案,请参见下文。

【问题讨论】:

您需要澄清“不起作用”的含义。 发生了什么?错误信息?出乎意料的结果? 是的,好点 - 将编辑问题 真的值得一票否决吗? 【参考方案1】:

看来这必须在 2 次操作中完成。先找到你要删除的rel的索引

var index = workItem.Relations.ToList().FindIndex(r => r.Rel.Contains("<search term>"));

然后创建 2 个PatchOperations,一个在索引处删除,然后一个添加一个新的rel,指向您的新工作项。

【讨论】:

以上是关于C# 使用 JsonPatchDocument 更新 Azure Devops 工作项父级的主要内容,如果未能解决你的问题,请参考以下文章

如果为 null,则 JsonPatchDocument 实例化嵌套对象

如何使用 C# 将 XSLT 更改为使用动态 XPath?

如何使用 Nadio c# 使声音更大?

什么时候 ArrayList 比在 C# 中使用数组更有效? [复制]

C++ 河豚可以使用更少的字母,但 C# 河豚不能

译《C# 小技巧 -- 编写更优雅的 C#》原书名《C# Tips -- Write Better C#》