2016-08-25 40 views
0

我正在尝试使用TFS进行工作,我有一个问题:如何获取项目中所有可能的区域路径?如何获得所有区域路径TFS API 2013

我发现了一些信息,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财产。 我如何获得项目中的所有区域路径?

回答

1

感谢您的想法,丹尼尔

正确的代码:

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); 
} 
+0

如何获得项目的默认区域? – yrahman

0

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

以下是假设:您通过迭代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。如果该属性不存在,代码将不会编译,因此您可以将鼠标悬停在实例上,并查看它认为它是什么类型。

+1

THX的答案,但我赶上例外,在这一刻'x.GetClient ()'** System.ArgumentException ** – krabcore

相关问题