2009-07-21 25 views
5

chúng tôi đang liên kết Lặp lại trong TFS với một hệ thống bên ngoài để theo dõi các dự án thông qua toàn bộ công ty. Trong quá khứ, chúng tôi đã liên kết bằng cách sử dụng IterationPath trong một dự án TFS, nhưng vấn đề là mọi người đổi tên các IterationPath này thành tiến trình dự án và liên kết bị mất. Vì vậy, sau một số nghiên cứu, tôi đang nghĩ đến việc tạo liên kết bằng cách sử dụng IterationID. Các IterationID trong TFSWarehouse là không giống như IterationID trong bảng WorkItemTracking, và tôi dường như không thể tìm thấy một cách dễ dàng để tìm IterationID của một IterationPath? Bất cứ ai có bất kỳ ý tưởng làm thế nào chúng ta có thể đạt được điều này?Tìm IterationID trong TFS

Trả lời

0

Tôi muốn sử dụng snap-in mạnh mẽ từ các công cụ TFS Power mới nhất cho việc này.

> $tfs = Get-TfsServer <name> -all 
> $tfs.WIT.Projects | % { $_.IterationRootNodes } | ft -auto id, path 

Id Path          
-- ----         
100 Test-ConchangoV2\Release 1\Sprint 1   
92 Test-ConchangoV2\Release 1\Sprint 2   
97 Test-ConchangoV2\Release 1\Sprint 3   
91 Test-ConchangoV2\Release 1\Sprint 4   
94 Test-ConchangoV2\Release 1\Sprint 5   
93 Test-ConchangoV2\Release 1\Sprint 6   
96 Test-ConchangoV2\Release 2\Sprint 1   
90 Test-ConchangoV2\Release 2\Sprint 2   
98 Test-ConchangoV2\Release 2\Sprint 3   
99 Test-ConchangoV2\Release 3\Sprint 1   
95 Test-ConchangoV2\Release 3\Sprint 2   
89 Test-ConchangoV2\Release 3\Sprint 3   
+0

Cảm ơn - sẽ tải xuống và hãy xem! Nếu nó có thể được thực hiện thông qua Powershell, cần có một cách để làm điều này thông qua SDK? Công cụ liên kết này là một ứng dụng ASP.NET nên rất thích làm trong ASP.NET. – Kolchy

+0

Đã có một vở kịch, và ở trên chỉ cho thấy Iteration là 2 cấp độ sâu (ví dụ: Client Name \ Root Iteration \ Child Iteration). Nó không hiển thị gốc Iterations hoặc Iterations là con cái của trẻ em ... – Kolchy

+0

là năm 2015 này chỉ? Tôi vừa tải về TFS Power Tools 2013 mới nhất ngày 2015-04-13 và những đối tượng này không có sẵn. TFS Power Tools 2015 ngụ ý rằng nó sẽ làm việc với Team Explorer 2015 nhưng tôi không thể làm cho nó hoạt động. – rob

2

OK - sau khi một số đào sâu hơn, tìm thấy đoạn code dưới đây lặp mà qua tất cả các lần lặp lại, nên sử dụng một tập hợp con của này, tôi sẽ có được những gì tôi cần :)

using System; 
using Microsoft.TeamFoundation.Client; 
using Microsoft.TeamFoundation.WorkItemTracking.Client; 

namespace TFSIterationList 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string tfsServer = "tfs"; 
      string tfsProject = "Project Name"; 
      TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer(tfsServer); 
      WorkItemStore store = new WorkItemStore(tfsServer); 
      PrintTreeNodeCount(store, tfsProject); 
     } 


     private static void PrintTreeNodeCount(WorkItemStore store, string tfsProject) 
     { 
      int iterationNodeCount = 0; 
      NodeCollection rootNodeCollection = store.Projects[tfsProject].IterationRootNodes; 
      GetChildNodeCount(rootNodeCollection, ref iterationNodeCount); 
      Console.WriteLine(tfsProject + " Iteration nodes : " + iterationNodeCount); 
     } 

     private static void GetChildNodeCount(NodeCollection nodeCollection, ref int nodeCount) 
     { 
      nodeCount += nodeCollection.Count; 
      for (int i = 0; i < nodeCollection.Count; i++) 
      { 

       Console.WriteLine(nodeCollection[i].Id + " : " + nodeCollection[i].Path); 
       // Console.WriteLine(nodeCollection[i].Name); 

       if (nodeCollection[i].ChildNodes.Count > 0) 
       { 
       // Recursively walk through the child nodes 
        GetChildNodeCount(nodeCollection[i].ChildNodes, ref nodeCount); 
       } 
      } 
     } 

    } 
} 
+0

Điều này có thực sự cung cấp cho bạn ID lặp lại mà bạn có thể truy vấn không? – sonicblis

0

nếu bạn muốn để in ra tất cả các Vùng TFS, sau đó thay đổi dòng sau:

từ: NodeCollection rootNodeCollection = store.Projects [tfsProject] .IterationRootNodes;

tới: NodeCollection rootNodeCollection = store.Projects [tfsProject] .AreaRootNodes;

cảm ơn vì mã này hữu ích cho tôi.

0

Điều này cũng có thể đạt được bằng cách sử dụng Ngôn ngữ truy vấn mục công việc (WIQL on MSDN).

Với WIQL, bạn có thể truy vấn TFS. Tôi đã sử dụng C#, nhưng tôi tin rằng điều này làm việc với hầu hết/tất cả các ngôn ngữ .NET.

WorkItemStore workItemStore = (WorkItemStore)projectCollection.GetService(typeof(WorkItemStore)); 
WorkItemCollection queryResults = workItemStore.Query(
        "Select [System.IterationID], [System.IterationPath] " + 
        "From WorkItems ORDER BY [System.IterationID]"); 

Bạn có thể tìm thấy một iterationID cụ thể bằng cách thêm một mệnh đề where để chuỗi truy vấn của bạn:

+ " Where [System.IterationPath] = 'Path'"); 

Các queryResults có thể xem bằng cách lặp qua chúng:

foreach (WorkItem workitem in queryResults) 
      { 
       Console.WriteLine(workitem.IterationID); 
      } 
Các vấn đề liên quan