2016-08-25 5 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プロパティをhaventはので、それは、作品をdidntの。 プロジェクト内のすべてのエリアパスを取得するにはどうすればよいですか?

答えて

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

関連する問題