2009-07-21 15 views
5

में IterationID ढूँढना हम पूरी कंपनी के माध्यम से परियोजनाओं को ट्रैक करने के लिए बाहरी प्रणाली में टीएफएस के भीतर इटरेशन को जोड़ रहे हैं। अतीत में, हम एक टीएफएस परियोजना में इटरेशनपैथ का उपयोग कर लिंक कर रहे थे, लेकिन समस्या यह है कि लोग इन इटरेशनपैथ का नाम बदलते हैं क्योंकि परियोजनाएं प्रगति होती हैं, और लिंक खो जाता है। तो कुछ शोध के बाद, मैं IterationID का उपयोग करके लिंक करने की सोच रहा हूं। TFSWarehouse में IterationID WorkItemTracking तालिका में IterationID के समान नहीं है, और मुझे IterationPath के IterationID को खोजने का एक आसान तरीका नहीं दिख रहा है? किसी को भी कोई आइडिया नहीं मिला कि हम इसे कैसे प्राप्त कर सकते हैं?टीएफएस

उत्तर

0

मैं इसके लिए नवीनतम टीएफएस पावर टूल्स से पावरहेल स्नैप-इन का उपयोग करूंगा।

> $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

धन्यवाद: उन के माध्यम से पुनरावृत्ति द्वारा

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

queryResults दृश्य हो सकता है:

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

आप अपनी क्वेरी स्ट्रिंग के लिए एक जहां खंड जोड़कर किसी विशिष्ट iterationID मिल सकता है - डाउनलोड और एक नज़र डालेंगे! यदि यह पावरहेल के माध्यम से किया जा सकता है, तो एसडीके के माध्यम से ऐसा करने का एक तरीका होना चाहिए? यह लिंकिंग टूल एक एएसपी.नेट एप्लीकेशन है इसलिए एएसपी.नेट में करना अच्छा लगेगा। – Kolchy

+0

एक खेल था, और उपर्युक्त केवल इटरेशन दिखाता है जो 2 स्तर गहरे होते हैं (जैसे क्लाइंट नाम \ रूट इटरेशन \ चाइल्ड इटरेशन)। यह रूट इटरेशन या इटरेशन नहीं दिखाता है जो बच्चों के बच्चे हैं ... – Kolchy

+0

यह 2015 केवल है? मैंने अभी 2015-04-13 के नवीनतम टीएफएस पावर टूल्स 2013 को डाउनलोड किया है और वे ऑब्जेक्ट्स उपलब्ध नहीं हैं। टीएफएस पावर टूल्स 2015 का तात्पर्य है कि यह टीम एक्सप्लोरर 2015 के साथ काम करेगा लेकिन मैं इसे काम नहीं कर सका। – rob

2

ठीक है - कुछ और खुदाई के बाद, कि दोहराता नीचे कोड सभी पुनरावृत्तियों के माध्यम से है, इसलिए इस का एक सबसेट का उपयोग कर पाया, मैं मैं क्या जरूरत :)

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

क्या यह वास्तव में आपको पुनरावृत्ति आईडी देता है, हालांकि आप इसके साथ पूछ सकते हैं? – sonicblis

0

अगर आप चाहते हैं मिल जाएगा प्रिंट आउट करने के लिए सभी TFS क्षेत्रों तो निम्न पंक्ति को बदलने:

से : NodeCollection rootNodeCollection = store.Projects [tfsProject] .IterationRootNodes;

से: नोडकोलेक्शन रूट नोडकोलेक्शन = स्टोर। प्रोजेक्ट्स [tfsProject] .अरेरा रूट नोड्स;

कोड के लिए धन्यवाद यह मेरे अंत में सहायक था।

0

यह कार्य आइटम क्वेरी भाषा (WIQL on MSDN) का उपयोग कर भी हासिल किया जा सकता है।

WIQL के साथ, आप टीएफएस से पूछ सकते हैं। मैंने सी # का उपयोग किया, लेकिन मेरा मानना ​​है कि यह अधिकांश/सभी .NET भाषाओं के साथ काम करता है।

foreach (WorkItem workitem in queryResults) 
      { 
       Console.WriteLine(workitem.IterationID); 
      }