我在TFS项目中有一些迭代,我试图根据以下内容读取开始和结束日期:
我手动设置了开始和结束日期
我做:
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。
有什么想法吗?
答案 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实例中创建用户故事并将其设置为活动来测试它。这会设置您的代码找到的故事的开始日期。