2011-01-21 5 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

+0

참조 : "Microsoft.TeamFoundation.Client"및 "Microsoft.TeamFoundation.VersionControl.Client" – ftexperts

+1

GetItems 메서드에 RecursionType.Full을 매개 변수로 추가해야합니다. 그렇지 않으면 하위 폴더에서 항목을 가져 오지 않습니다. –

7

이 시도 :

지금까지 내가 연결 작업 공간 및 작업 폴더 생성 관리했습니다

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

제 이전에 추가했다면 답을 받아 들였을 것입니다. 이제 +1 만받습니다. – jgauffin

+0

감사합니다. 게시하기 전에 tfs와 비교하여 확인해야했습니다. :) – frennky