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
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
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);
}
}
}
}
}
Đ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
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.
Đ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);
}
- 1. Tìm tất cả các tệp bị khóa trong TFS
- 2. TFS: Tìm kiếm tệp theo tên trong điều khiển nguồn
- 3. TFS: Tìm tệp đã chuyển theo tên cũ
- 4. TFS - Tìm chi tiết của tiếng changeset ID
- 5. Tìm đường dẫn tfs của chi nhánh đã hợp nhất
- 6. TFS Tìm tập tin phù hợp với OR
- 7. Nâng cấp TFS 2008 lên TFS 2012
- 8. Sử dụng tìm nạp git-tfs để tìm nguyên nhân mới nhất xung đột hợp nhất
- 9. TFS TFS có cần tệp .vspcc không?
- 10. Kệ trong TFS là gì?
- 11. Build number Format trong TFS
- 12. Hợp nhất chéo trong TFS?
- 13. Rollback một changeset trong tfs
- 14. Phân nhánh so với giá trong TFS
- 15. Tìm nạp lịch sử nhận xét cho một mục công việc trong TFS
- 16. Tìm hiểu ai đã thực hiện thay đổi trong VS 2010 với TFS
- 17. Mã TFS 2010 và VS 2010 tìm kiếm trong điều khiển nguồn
- 18. Di cư từ TFS 2010 sang TFS 2012
- 19. Nhận tất cả thư mục từ TFS bằng TFS SDK
- 20. TFS vs SVN lệnh
- 21. Định cấu hình vị trí máy chủ TFS trong TFS powertools
- 22. In các mục công việc trong TFS
- 23. Mất lịch sử TFS
- 24. nâng cấp TFS 2010 và TFS 2012 RC lên TFS 2012 final
- 25. Git và TFS tích hợp cho TFS Xây dựng
- 26. Powershell và TFS: tf.exe so với Power tools TFS cmdlets?
- 27. Kết hợp hai nhánh TFS với git tfs
- 28. Git-Tfs: Một thay đổi TFS cho mỗi Commit Git?
- 29. Chi nhánh mồ côi trong TFS
- 30. Ảnh hồ sơ trong TFS 2012
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
Đã 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
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