2011-01-21 36 views
8

Tôi đang cố gắng tìm ra cách lấy danh sách các tệp từ một thư mục cụ thể ("$/theproject/trunk/setup /") trong TFS mà không cần đặt chúng trong thư mục cục bộ.Lấy danh sách tập tin từ TFS

Cho đến nay tôi đã quản lý để kết nối, tạo ra một không gian làm việc và một thư mục làm việc:

 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(); 
     } 

Trả lời

14

Nó làm như thế này:

 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 cho mã hoàn chỉnh. Tôi có thể tự mình sử dụng nó. – nik0lias

+0

Tham khảo: "Microsoft.TeamFoundation.Client" và "Microsoft.TeamFoundation.VersionControl.Client" – ftexperts

+1

Cần thêm RecursionType.Full làm tham số cho phương thức GetItems, nếu không nó sẽ không mang các mục từ thư mục con. –

7

Hãy thử điều này:

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

Tôi đã chấp nhận câu trả lời của bạn nếu bạn đã thêm nó trước khi tôi (hoặc nếu nó đã được chi tiết hơn). Bây giờ bạn chỉ có +1. – jgauffin

+0

cảm ơn, tôi đã phải kiểm tra nó với tfs trước khi đăng :) – frennky

Các vấn đề liên quan