如何获得所有区域路径TFS API 2013

本文关键字:TFS API 2013 路径 区域 何获得 | 更新日期: 2023-09-27 18:03:54

我正试图使与TFS工作的实用程序,我有一个问题:如何在项目中获得所有可能的区域路径?

我找到了一些2010年的信息:http://geekswithblogs.net/TarunArora/archive/2011/07/10/tfs-2010-sdk-get-projects-iterations-area-path-queries-and.aspx

   foreach (Node area in project.AreaRootNodes)
   {
          lstAreaPath.Items.Add(area.Name);
          foreach (Node item in area.ChildNodes)
          {
              lstAreaPath.Items.Add(item.Name);
          }
    }

,但它没有工作,因为我没有AreaRootNodes属性在我的项目。如何在项目中获得所有区域路径?

如何获得所有区域路径TFS API 2013

谢谢你的主意,Daniel

正确的代码:

var wis = (WorkItemStore)Connection.ProjectCollection.GetService(typeof(WorkItemStore));
var pj = wis.Projects.Cast<Project>().FirstOrDefault(x => x.Name == projectName);
if (pj == null)
    return new List<string>();
foreach (Node area in pj.AreaRootNodes)
{
    resultList.Add(area.Path);
    resultList.AddRange(from Node item in area.ChildNodes select item.Path);
}

我对周围的代码做了一个假设,你没有包括,但我很确定我是对的。

这里有一个假设:您通过迭代ProjectCollection类的实例来获得您的项目。这是一个旧的泛型前集合,因此其中的所有内容都是object类型。将你的project实例转换为Microsoft.TeamFoundation.WorkItemTracking.Client.Project

,

var wis = x.GetClient<WorkItemStore>();
foreach (var project in wis.Projects.Cast<Project>())
{
   // Your code here
}

无论如何,这种类型的问题即使在IDE中也很容易解决。如果属性不存在,代码将无法编译,因此您可以将鼠标悬停在实例上,看看它认为自己是什么类型。