gpt4 book ai didi

c# - 如何在 C# 中以编程方式修改 TFS WorkItemType > FieldDefinition > AllowedValues?

转载 作者:太空宇宙 更新时间:2023-11-03 16:07:40 25 4
gpt4 key购买 nike

我在 XML 中创建了一个新的工作项类型,并通过命令提示符将其导入:witadmin importwitd...

假设我在 XML 中定义了一个字段:

<FIELD name="severity" refname="MySeverity" type="String">
<ALLOWEDVALUES>
<LISTITEM value="High"/>
<LISTITEM value="Medium"/>
</ALLOWEDVALUES>
</FIELD>

现在,我想修改这个 FieldDefinition,并向其添加另一个 LISTITEM,比如“Low”。我发现可以通过更改 XML 并重新导入它来完成。我的问题是,有没有办法在 C# 中以编程方式执行此操作?

有关更多信息,我设法通过以下代码查询了字段定义:

TfsTeamProjectCollection tpc = new TfsTeamProjectCollection(new Uri(my_uri));
WorkItemStore wistore = (WorkItemStore)tpc.GetService(typeof(WorkItemStore));
WorkItemType witype = wistore.Projects["MyProject"].WorkItemTypes["MyWorkItemType"];
for (int i = 0; i < witype.FieldDefinitions.Count; ++i)
{
FieldDefinition fd = witype.FieldDefinitions[i];
// Not able to modify fd and save.
}

如果有人可以阐明这一点,我将不胜感激。提前致谢!

最佳答案

无法以编程方式修改列表值。如果你想按照你所说的那样将值与表同步,那么如果你以编程方式执行它是不可能的,因为没有办法将表 ID 或代码与字段值一起存储。

如果您真的需要同步部分,那么您可以尝试使用一些疯狂的解决方法。您可以像通常用于显示的那样使用 xml 存储允许的值。之后,在一组单独的允许值中,您可以为用户组名称“xxxx”指定一个隐藏的索引值列表,这样它就不会显示出来。在此隐藏列表中,您可以存储表当前状态的“TableId=ValueName”映射。然后下次你的一个字段被修改时,你可以引用这个列表并获取值的以前的名称并在索引和显示列表中修改它。然后,您可以使用相同的索引列表来维护工作流和 FormLayout 的设置。

引用下面的例子...

<ALLOWEDVALUES>
<GLOBALLIST name="globalListName" />
<LISTITEM value="Name1" />
<LISTITEM value="Name2" />
<LISTITEM value="Name3" />
. . .
</ALLOWEDVALUES>

<ALLOWEDVALUES for="xxxxxx" expanditems="false">
<GLOBALLIST name="globalListName" />
<LISTITEM value="Id1=Name1" />
<LISTITEM value="Id2=Name2" />
<LISTITEM value="Id3=Name3" />
. . .
</ALLOWEDVALUES>

非常开箱即用,但可以在绝对必要时使用。

关于c# - 如何在 C# 中以编程方式修改 TFS WorkItemType > FieldDefinition > AllowedValues?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18712760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com