You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:09:23