2009-03-06 25 views
5

हम TFS ग्राहक API का उपयोग करके, TFS से कनेक्ट करने के लिए एक परियोजना आदिटीएफएस क्लाइंट एपीआई - किसी विशिष्ट फ़ाइल से जुड़े कार्य आइटम प्राप्त करने के लिए क्वेरी?


हम काम आइटम की दुकान में जानना चाहते हैं, WIQL का उपयोग कर के लिए काम करते आइटम लाने के लिए एक कस्टम उपकरण लिख रहे हैं।

एक पूरी तरह से योग्य फ़ाइल नाम दिया गया है, जो कार्य आइटमों की सूची प्राप्त करने का सबसे आसान तरीका है जिसमें निर्दिष्ट फ़ाइल है जिसमें निर्दिष्ट फ़ाइल है?

उत्तर

4

मुझे यकीन नहीं है कि आप TFS API का उपयोग करने का अनुरोध करने वाले प्रश्न को करने का एक आसान तरीका है। मुझे पता है कि आप निश्चित रूप से WIQL का उपयोग करके ऐसा नहीं कर सकते हैं। मुझे लगता है कि, एपीआई का उपयोग करके, आपको सभी काम वस्तुओं पर पुन: प्रयास करना होगा - उनमें परिवर्तन परिवर्तन प्राप्त करें और उसके बाद फ़ाइल पथ के लिए प्रत्येक परिवर्तन में देखें। यह स्पष्ट रूप से ज्यादा उपयोग नहीं है।

हालांकि आप उस डेटा को टीएफएस डेटा वेयरहाउस डेटाबेस का उपयोग कर प्राप्त कर सकते हैं। यह जानकारी लाइव परिचालन स्टोर जानकारी के पीछे रह जाएगी क्योंकि गोदाम केवल समय-समय पर अपडेट हो जाता है - लेकिन आपको फ़ोल्डर/फ़ाइल आयाम द्वारा चीजों को आसानी से ट्रैक करने की अनुमति देगा।

-2

समाधान एक्सप्लोरर में फ़ाइल पर राइट-क्लिक करें और इतिहास देखें का चयन करें। आपको परिवर्तनों की एक सूची मिल जाएगी। एक परिवर्तनसेट पर डबल-क्लिक करने से एक संवाद आएगा जहां आप संबंधित कार्य आइटम देख सकते हैं।

+0

क्षमा करें, मैं TFS क्वेरी करने के लिए WIQL उपयोग के बारे में बात कर रहा हूँ एक कस्टम उपकरण से हम विकास कर रहे हैं। – amazedsaint

2

यह छोटा कोड स्निपेट आपको एक TFS सर्वर नाम और एक प्रोजेक्ट दिए गए कार्य आइटमों का संग्रह प्राप्त करेगा .. यह हटाए गए राज्य में कार्य आइटम भी फ़िल्टर करता है।

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Microsoft.TeamFoundation.Client; 
using Microsoft.TeamFoundation.WorkItemTracking.Client; 

    namespace EngineTFSAutomation 
    { 
     class TFSHelper 
     { 
      static public WorkItemCollection QueryWorkItems(string server, string projectname) 
      { 
       TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer(server); 
       WorkItemStore workItemStore = (WorkItemStore)tfs.GetService(typeof(WorkItemStore)); 
       Project p = workItemStore.Projects[projectname]; 
       string wiqlQuery = "Select * from Issue where [System.TeamProject] = '"+projectname+"'"; 
       wiqlQuery += " and [System.State] <> 'Deleted'"; 
       wiqlQuery+= " order by ID"; 
       WorkItemCollection witCollection = workItemStore.Query(wiqlQuery); 
       return witCollection; 
      } 
     } 
    } 
+0

मुझे अभी एहसास हुआ है कि आप उन सभी कार्य आइटम्स की सूची प्राप्त करने का एक तरीका ढूंढ रहे हैं जिनके पास एक विशिष्ट फ़ाइल को प्रभावित करने वाले परिवर्तन हैं। –

+0

अच्छी तरह से WIQL क्वेरी आपको सभी कार्य आइटम देगा, तो मुझे लगता है कि आप लिंक के प्रत्येक कार्य आइटम को फिर से सक्रिय कर सकते हैं। यदि लिंक परिवर्तन हैं तो आप देख सकते हैं कि परिवर्तनों में फ़ाइल में प्रश्न है या नहीं। मैं देखूंगा कि क्या मैं इस तरह कुछ कोड कर सकता हूं, मैं बाद में अपना जवाब संशोधित करूंगा। –

+0

मैं आपके द्वारा प्रदान किए गए कोड को आजमा रहा था, और चेतावनी मिली कि टीमएफउंडेशन सर्वर वर्ग को टीएफएस 2010 में बहिष्कृत किया गया है। मैंने \t 'TfsTeamProjectCollection tfs = new TfsTeamProjectCollection (नया उरी (सर्वर)) का उपयोग किया; tfs.Ensure प्रमाणीकृत(); 'जो काम करता है, लेकिन क्वेरी हमेशा के लिए चलती प्रतीत होती है (और अंत में नहीं आती है)। क्या आपके पास संकेत है? – Matt

1

TFS के लिए 2012

Uri tfsUri = new Uri("http://xxx.xx.xx.xxx:8080/tfs2012"); 
    TfsConfigurationServer configurationServer =TfsConfigurationServerFactory.GetConfigurationServer(tfsUri);     
    ReadOnlyCollection<CatalogNode> collectionNodes = configurationServer.CatalogNode.QueryChildren(new[] {CatalogResourceTypes.ProjectCollection },false,CatalogQueryOptions.None); 

    foreach (CatalogNode collectionNode in collectionNodes) 
    { 
     // Use the InstanceId property to get the team project collection 
     Guid collectionId = new Guid(collectionNode.Resource.Properties["InstanceId"]); 
     TfsTeamProjectCollection teamProjectCollection = configurationServer.GetTeamProjectCollection(collectionId); 

     WorkItemStore workItemStore = (WorkItemStore)teamProjectCollection.GetService(typeof(WorkItemStore)); 

     string query = "SELECT [System.Id] FROM WorkItems where [Assigned to][email protected]"; 
     WorkItemCollection queryResults = workItemStore.Query(query); 

    } 
0

TFS 2013 के लिए निम्नलिखित कोड का उपयोग करने की TFS परियोजना सूचना काम करता है:

var tfsUri = new Uri("http://tfs.xxx.xxx.com:8080/tfs/myCollection"); 
var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(tfsUri); 
tfs.EnsureAuthenticated(); 
var iis = tfs.GetService<Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItemStore>(); 
// here access to a particular Project with its name 
var uriWithGuid = iis.Projects["My project name"].Uri; 
संबंधित मुद्दे