如何以编程方式设置待办事项迭代和团队/区域连接

本文关键字:迭代 团队 连接 区域 编程 方式 设置 | 更新日期: 2023-09-27 18:05:30

到目前为止,我可以通过编程创建一个新的团队和一个新的区域,但是当我导航到TFS 2015 "Work"选项卡时,我看到这个错误:

TF400509:没有指定backlog迭代路径。您必须选择一个迭代路径

如果我手动选择一次迭代那么我得到:

TF400512:您没有为您的团队选择任何区域。在使用产品待办事项列表、任务板或磁贴等功能之前,您必须至少选择一个区域。

下面是我的代码:

            tpc.Authenticate();
            // Create New Area
            ICommonStructureService css = tpc.GetService<ICommonStructureService>();
            string rootNodePath = string.Format("''Onboarding''Area");
            var pathRoot = css.GetNodeFromPath(rootNodePath);
            var newAreaPath = css.CreateNode("Area 51", pathRoot.Uri);
            // Create new Team with Same Name
            TfsTeamService tts = tpc.GetService<TfsTeamService>();
            string newteamname = "Area 51";
            string teamdescription = "Area 51 Team Description";
            IDictionary<string, object> prop = new Dictionary<string, object>
            {
                {"Area", "Area 51"},
                {"Iteration", "''Onboarding''Iteration''Onboarding" }
            };
            tts.CreateTeam(onboardingProject.Uri.ToString(), newteamname, teamdescription, prop);

            TfsTeamService teamService = tpc.GetService<TfsTeamService>();
            ProjectInfo projectInfo = css.GetProjectFromName("Onboarding");
            var allTeams = teamService.QueryTeams(projectInfo.Uri);

那么问题又来了?

在什么时候您可以为新区域设置待办事项迭代,以及您如何/在哪里为新团队选择新区域?

如何以编程方式设置待办事项迭代和团队/区域连接

您可以添加以下代码来设置backlog迭代路径:

    TeamSettingsConfigurationService tscs = tpc.GetService<TeamSettingsConfigurationService>();
    IEnumerable<TeamFoundationTeam> teams = tts.QueryTeams(projectInfo.Uri);
    TeamFoundationTeam team = teams.Where(a => a.Name == "Area 51").FirstOrDefault();
    var teamconfigs = tscs.GetTeamConfigurations(new[] { team.Identity.TeamFoundationId });
    TeamConfiguration tconfig = teamconfigs.FirstOrDefault();
    Console.WriteLine(tconfig.TeamName);
    TeamSettings ts = tconfig.TeamSettings;
    ts.IterationPaths = new string[] { string.Format("''Onboarding''Iteration 1") };
    ts.BacklogIterationPath = string.Format("''Onboarding''Iteration 1");
    TeamFieldValue tfv = new TeamFieldValue();
    tfv.IncludeChildren = true;
    tfv.Value = projectInfo.Name + "''Area 51";
    ts.TeamFieldValues = new TeamFieldValue[] { tfv};
    tscs.SetTeamSettings(tconfig.TeamId,ts);

你要找的是TeamSettings类,你可以检查TFS 2012 API如何以编程方式设置TeamSettings的情况:

 // Set up default team sprint date and time
        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);

实用博客:http://blogs.microsoft.co.il/shair/2012/05/23/tfs-api-part-46-vs11-team-settings/