TFS Api 未在 Dev Azure 上的自定义流程模板中提供自定义状态

Posted

技术标签:

【中文标题】TFS Api 未在 Dev Azure 上的自定义流程模板中提供自定义状态【英文标题】:TFS Api not giving custom states in a customized Process Template on Dev Azure 【发布时间】:2021-08-20 13:09:41 【问题描述】:

我在 Scrum 流程模板中添加了一个自定义状态,但在我基于该自定义流程模板创建一个新项目之前,API 不会提供新添加的状态。

每次我都必须创建项目作为解决此问题的解决方案。我可以做些什么来解决这个问题?

WorkItemStore workItemStore = this.tfsTeamProjectCollection.GetService<WorkItemStore>();

            int projectConunt = workItemStore.Projects.Count;

            for (int i = 0; i < projectConunt; i++)
            
                WorkItemTypeCollection workItemTypeCollection = workItemStore.Projects[i].WorkItemTypes;

                for (int j = 0; j < workItemTypeCollection.Count; j++)
                
                    string workitemType = workItemTypeCollection[j].Name;

                    for (int k = 0; k < workItemTypeCollection[j].FieldDefinitions.Count; k++)
                    
                        Microsoft.TeamFoundation.WorkItemTracking.Client.FieldDefinition fieldDefinition =
                            workItemTypeCollection[j].FieldDefinitions[k];
                       
                        if (filedRefName == fieldDefinition.ReferenceName)
                        
                            List<string> allowedValues = new List<string>();

                            foreach (var allowedValue in fieldDefinition.AllowedValues)
                            
                                allowedValues.Add(allowedValue.ToString());
                            

                            WorkItemFieldsInfo workItemFieldInfo = workItemFieldsInfo.Find(st => st.Type == workitemType);

                            if (workItemFieldInfo == null)
                            
                                workItemFieldsInfo.Add(new WorkItemFieldsInfo()
                                
                                    Type = workitemType,
                                    AllowedValues = allowedValues
                                );
                            
                            else
                            
                                List<string> unionFields = workItemFieldInfo.AllowedValues.Union(allowedValues).ToList();
                                workItemFieldInfo.AllowedValues = unionFields;
                            

                            break;
                        
                    
                
            

【问题讨论】:

【参考方案1】:

我无法重现此问题。我在下面使用了rest api,它工作得很好。见here。

获取https://dev.azure.com/organization/_apis/work/processes/processId/workItemTypes/witRefName/states?api-version=6.1-preview.1

您可以使用下面的 rest api 获取 processid

获取https://dev.azure.com/organization/_apis/work/processes?api-version=6.1-preview.2

【讨论】:

我们使用的是 TFS api 而不是 REST api。 @ArsalanYounus 你能分享一下你用来获取状态的相关代码吗? 我在我的问题中添加了代码,它可以从所有收集项目的所有工作项类型中找到所有允许的值。 “filedRefName”是“System.State”。

以上是关于TFS Api 未在 Dev Azure 上的自定义流程模板中提供自定义状态的主要内容,如果未能解决你的问题,请参考以下文章

VssResourceNotFoundException:API 资源位置 <GUID> 未在 tfs url 上注册 - c#

Tfs / Azure DevOps 客户端库合并 Azure DevOps 分支上的冲突解决

如何使用 API 创建跨 TFS 集合的 TFS/Azure DevOps 工作项查询并将其导出到 Wor/Excel/Outlook 等

TFS/Azure DevOps 上的发布工件的位置在哪里

如何为 Windows Azure Web 角色上的 PHP 项目配置 TFS 构建定义以实现持续集成?

返回 Azure DevOps Server (TFS) 中管道的旧视图