2011-01-21 15 views
8

से एक फ़ाइल सूची प्राप्त करें मैं यह पता लगाने की कोशिश कर रहा हूं कि किसी विशिष्ट फ़ोल्डर ("$/प्रोजेक्ट/ट्रंक/सेटअप /") से स्थानीय फ़ोल्डर में डाले बिना टीएफएस में फ़ाइलों की सूची कैसे प्राप्त करें।टीएफएस

 var server = RegisteredTfsConnections.GetProjectCollection(new Uri("http://hostname:8080/")); 
     var projects = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(server); 
     var versionControl = (VersionControlServer)projects.GetService(typeof(VersionControlServer)); 

     var workspace = versionControl.CreateWorkspace(AppDomain.CurrentDomain.FriendlyName + "-installer", versionControl.AuthorizedUser); 
     try 
     { 
      WorkingFolder folder = new WorkingFolder("$/theproject/trunk/setup/", "C:\\aTempFolder"); 
      workspace.CreateMapping(folder); 

      //this would get all files to the local folder, right? 
      //what should I do instead to just get a file list? 
      workspace.Get(); 

     } 
     finally 
     { 
      workspace.Delete(); 
     } 

उत्तर

14

यह इस तरह किया है::

 var server = RegisteredTfsConnections.GetProjectCollection(new Uri("http://hostname:8080/")); 
     var projects = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(server); 
     var versionControl = (VersionControlServer)projects.GetService(typeof(VersionControlServer)); 

     var newestDate = DateTime.MinValue; 
     Item newestItem = null; 
     var items = versionControl.GetItems("$/theproject/trunk/setup/*.msi"); 
     foreach (var item in items.Items) 
     { 
      if (item.ItemType != ItemType.File) 
       continue; 

      if (item.CheckinDate > newestDate) 
      { 
       newestItem = item; 
       newestDate = item.CheckinDate; 
      } 
     } 
     newestItem.DownloadFile("C:\\temp\\" + Path.GetFileName(newestItem.ServerItem)); 
+1

+ 1 पूर्ण कोड के लिए। मैं इसे स्वयं इस्तेमाल कर सकता था। – nik0lias

+0

संदर्भ: "माइक्रोसॉफ्ट.TeamFoundation.Client" और "माइक्रोसॉफ्ट.TeamFoundation.VersionControl.Client" – ftexperts

+1

रीडर्सन टाइप जोड़ने की आवश्यकता है। विधि GetPtems के पैरामीटर के रूप में पूर्ण करें, अन्यथा यह सबफ़ोल्डर से आइटम नहीं लाता है। –

7

इस प्रयास करें:

अब तक मैं, कनेक्ट एक कार्यक्षेत्र और एक काम फ़ोल्डर बनाने के लिए प्रबंधित किया है

ItemSet items = versionControl.GetItems(folder.ServerItem, RecursionType.Full); 
+0

अगर आपने इसे पहले जोड़ा था (या यदि यह अधिक विस्तृत हो गया था) तो मैंने आपका जवाब स्वीकार कर लिया होगा। अब आपको केवल +1 मिल गया है। – jgauffin

+0

धन्यवाद, मुझे इसे पोस्ट करने से पहले टीएफएस के खिलाफ जांचना था :) – frennky