2011-01-21 54 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);