如何通过编程在TFS中配置项目待办事项?需补充指定缺失字段
解决方案:补充Project Backlog缺失字段并创建工作项
你已经完成了TFS团队迭代与Backlog路径的基础配置,接下来可以通过以下扩展代码,创建Work Item并填充所需的缺失核心字段:
完整代码实现
以下代码在你现有配置逻辑的基础上,添加了Work Item的创建与字段填充逻辑:
// 你的现有代码:配置团队迭代和Backlog设置 var teamConfig = _tfs.GetService<TeamSettingsConfigurationService>(); var css = _tfs.GetService<ICommonStructureService4>(); string rootNodePath = string.Format("\\{0}\\Iteration\\Release 1\\Sprint 1", _selectedTeamProject.Name); var pathRoot = css.GetNodeFromPath(rootNodePath); css.SetIterationDates(pathRoot.Uri, DateTime.Now.AddDays(-5), DateTime.Now.AddDays(7)); var configs = teamConfig.GetTeamConfigurationsForUser(new[] { _selectedTeamProject.Uri }); var team = configs.Where(c => c.TeamName == "Demo").FirstOrDefault(); var ts = team.TeamSettings; ts.BacklogIterationPath = string.Format(@"{0}\\Release 1", _selectedTeamProject.Name); ts.IterationPaths = new string[] { string.Format(@"{0}\\Release 1\\Sprint 1", _selectedTeamProject.Name), string.Format(@"{0}\\Release 1\\Sprint 2", _selectedTeamProject.Name) }; var tfv = new TeamFieldValue(); tfv.IncludeChildren = true; tfv.Value = _selectedTeamProject.Name; ts.TeamFieldValues = new []{tfv}; teamConfig.SetTeamSettings(team.TeamId, ts); // 新增:创建Backlog工作项并填充缺失字段 var workItemStore = _tfs.GetService<IWorkItemStore>(); Project targetProject = workItemStore.Projects[_selectedTeamProject.Name]; // 选择对应的工作项类型(示例为Product Backlog Item,可根据需求替换为User Story等) WorkItemType backlogItemType = targetProject.WorkItemTypes["Product Backlog Item"]; // 初始化新工作项 WorkItem newBacklogItem = new WorkItem(backlogItemType); // 填充必填及目标字段 newBacklogItem.Title = "用户管理模块权限精细化控制"; // 替换为实际需求标题 newBacklogItem.Fields["Assigned To"].Value = "Jane Smith"; // 替换为TFS中存在的用户显示名/ID newBacklogItem.Fields["State"].Value = "New"; // 匹配项目流程的有效状态(如Scrum的New/Approved) newBacklogItem.Fields["Effort"].Value = 8; // 工作量估计(仅适用于支持该字段的工作项类型) newBacklogItem.Fields["Business Value"].Value = 15; // 业务价值(用于优先级排序) newBacklogItem.Fields["Iteration Path"].Value = string.Format(@"{0}\\Release 1\\Sprint 1", _selectedTeamProject.Name); // 关联到已配置的迭代 newBacklogItem.Fields["Area Path"].Value = _selectedTeamProject.Name; // 关联项目区域路径 // 保存工作项到TFS newBacklogItem.Save();
关键字段说明
- Title: 工作项的核心描述,为必填字段,直接赋值字符串即可
- Assigned To: 需填写TFS项目中已存在的用户显示名或唯一ID,确保用户拥有项目访问权限
- State: 必须与项目使用的工作流程(如Scrum/Agile/CMMI)中的有效状态匹配,避免保存失败
- Effort: 仅对支持工作量估计的工作项类型生效(如Product Backlog Item),可赋值整数或小数
- Business Value: 用于Backlog优先级排序的字段,通常设置为0-20的整数,值越高优先级越高
注意事项
- 如果使用自定义工作项类型,需替换代码中对应的字段名称(比如部分项目可能将"Business Value"命名为"Business Priority")
- 保存前可调用
newBacklogItem.Validate()方法检查字段合法性,提前排查错误 - 若使用TFS REST API而非客户端对象模型,可改用
WorkItemTrackingHttpClient.CreateWorkItemAsync方法,逻辑一致但语法略有差异
内容的提问来源于stack exchange,提问作者TheWay
相关产品推荐
相关产品推荐

