2016-08-25 20 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