找不到Microsoft.VSTS.Scheduling.StartDate

时间:2014-08-19 22:31:13

标签: tfs

我在TFS项目中有一些迭代,我试图根据以下内容读取开始和结束日期:

http://blogs.msdn.com/b/visualstudiouk/archive/2013/01/16/migrating-tfs2010-sprint-dates-to-tfs2012-iteration-path-based-dates.aspx

我手动设置了开始和结束日期

enter image description here

我做:

       string WIQL = string.Format("SELECT * FROM WorkItems WHERE [System.TeamProject] = '{0}'", projectName);

        WorkItemCollection wic = wit.Query(WIQL);

        foreach (WorkItem wi in wic)
        {

            try
            {
                DateTime start = Convert.ToDateTime(wi.Fields["Microsoft.VSTS.Scheduling.StartDate"].Value);
                Console.WriteLine("Item does have start date!" + wi.IterationId);
            }
            catch (Exception)
            {
                Console.WriteLine("Item does not have start date!" + wi.IterationId);
            }

        }

        Console.WriteLine("Done");

    }

但是所有项都会抛出异常,这意味着永远找不到Microsoft.VSTS.Scheduling.StartDate字段。我正在使用TFS API 11和12。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

迭代日期不存储在工作项字段中,它们对于团队项目是全局的。获取迭代日期的正确方法是使用CommonStructureService:

TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri("<collection url>"));
ICommonStructureService4 css = tfs.GetService<ICommonStructureService4>();

NodeInfo ni = css.GetNodeFromPath(@"\<project name>\Iteration\<iteration name>");
Console.WriteLine("Start date: {0}", ni.StartDate);
Console.WriteLine("Emd date: {0}", ni.FinishDate);

答案 1 :(得分:0)

我仔细查看工作项类型。您可以下载TFS Power tools,然后将任何工作项类型导出到xml。这将允许您准确探索每个字段的类型。也许&#34;开始日期&#34;您正在寻找的实际上是您的TFS实例中的另一种类型。

您问题中的代码看起来不错。我通过在我的TFS实例中创建用户故事并将其设置为活动来测试它。这会设置您的代码找到的故事的开始日期。