2011-01-21 86 views
8

我試圖弄清楚如何從TFS中的特定文件夾(「$/theproject/trunk/setup /」)中獲取文件列表,而無需將它們放在本地文件夾中。從TFS獲取文件列表

到目前爲止,我已經成功地連接,創建一個工作區和工作文件夾:

 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 2011-01-21 13:48:04

+0

參考:「Microsoft.TeamFoundation.Client」和「Microsoft.TeamFoundation.VersionControl.Client」 – ftexperts 2015-02-09 19:07:16

7

試試這個:

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