2016-05-26 72 views
0

所以在我的代碼中,我有這個作爲訪問服務器項目的設置。 var tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("http://samplerepo:8080/tfs_proj/WindowsMain"), new UICredentialsProvider()); tfs.EnsureAuthenticated(); VersionControlServer vsStore = tfs.GetService<VersionControlServer>();c#團隊基礎點版本控制服務器映射項目

但是,當我想創建一個基於此服務器的工作空間,我不能。原因是WindowsMain未映射到本地文件夾。但是WindowsMain/MainProject被映射到本地文件夾。那麼如何創建映射到MainProject的工作區。鑑於我無法連接到WindowsMain/MainProject只是WindowsMain,因爲服務器連接的方式與團隊基礎完成。

+0

正是你正在嘗試做的? – Claudius

+0

@Claudius試圖創建與本地文件夾對應的工作區,以便我可以將工作區版本與服務器版本進行比較,並確定本地解決方案是否與服務器版本相同 – trinityalps

+0

並且您正在討論WindowsMain/MainProject – Claudius

回答

1

下面的代碼更新給定項目中的所有文件。如果要比較它可以很容易地修改:

private static void GetLatest(string username, string password, string path_to_download, 
      string tf_src_path) 
{ 

    Uri collectionUri = new Uri(PathConstants.uri); 
    NetworkCredential credential = new NetworkCredential(username, password); 
    TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri(PathConstants.uri), credential); 
    tfs.EnsureAuthenticated(); 
    VersionControlServer vc = tfs.GetService<VersionControlServer>(); 

    foreach (Workspace workspace in vc.QueryWorkspaces(null, null, System.Environment.MachineName)) 
     { 
      foreach (WorkingFolder folder in workspace.Folders) 
      { 
      ItemSpec itemSpec = new ItemSpec(folder.ServerItem, RecursionType.Full); 
      ItemSpec[] specs = new ItemSpec[] { itemSpec }; 
      ExtendedItem[][] extendedItems = workspace.GetExtendedItems(specs, DeletedState.NonDeleted, ItemType.File); 
      ExtendedItem[] extendedItem = extendedItems[0]; 
       foreach (var item in extendedItem) 
       { 
        if (item.VersionLocal != item.VersionLatest) 
        { 
         vc.DownloadFile(item.SourceServerItem, item.LocalItem); 
        } 
       } 
      } 
     } 
    } 

可以更換: vc.DownloadFile(item.SourceServerItem, item.LocalItem);

Console.WriteLine(item.LocalItem +": needs updating");

+0

即使我與服務器不同步,它不會顯示htat項目需要更新。任何猜測爲什麼這可能是? – trinityalps

+0

你是否可以進入每個循環?調試它或放置控制檯之前,如果聲明 – Claudius

+0

或添加系統診斷命名空間並使用debug.writeline(item.LocalItem +「:需要更新」); – Claudius