2012-12-20 65 views
5

我想從TFS更新本地文件,但我無法讓它工作。我甚至不知道它爲什麼會失敗,因爲TFS不會拋出我一個例外或任何東西,它只是默默地藐視我,並沒有更新任何東西。從TFS獲取文件的最新版本

public bool getLatest(string[] items) 
{ 
    try 
    { 
     Workspace myWorkspace = createWorkspace(); 
     myWorkspace.Get(items, 
         VersionSpec.Latest, 
         RecursionType.Full, 
         GetOptions.Overwrite); 

     return true; 
    } 
    catch (Exception ex) 
    { 
     Tools.MessageLogger.LogError(ex.Message); 
     return false; 
    } 
} 

我要補充一點,與TFS的所有其他通信就好了,pendingchanges,簽入或簽出的所有工作。這很令人沮喪。

+1

根據[文檔](http://msdn.microsoft.com/en-us/library/bb139316%28v=vs.80%29.aspx),'WorkSpace.Get()'應返回一個[ GetStatus](http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.versioncontrol.client.getstatus%28v=vs.80%29.aspx)對象,告訴你有多少警告/失敗/衝突有 - 如果你存儲這個並在調試中檢查它,它聽起來像它可能有你需要的信息。 – Bridge

回答

3

雖然我對此沒有先驗知識,但我想我會稍微擴展一下我的評論,希望它可能有所幫助(因爲沒有其他人似乎在回答)。

根據documentationWorkSpace.Get()應該返回一個GetStatus對象,告訴您有多少警告/失敗/衝突 - 此時您只是將此信息丟棄。

如果你想登錄獲得同樣的方式最新的,你登錄其他錯誤失敗,你可以嘗試這樣的事情:

public bool getLatest(string[] items) 
{ 
    try 
    { 
     Workspace myWorkspace = createWorkspace(); 

     var results = myWorkspace.Get(items, VersionSpec.Latest, RecursionType.Full, GetOptions.Overwrite); 
     var failures = results.GetFailures(); 

     foreach(var fail in failures) 
     { 
      Tools.MessageLogger.LogError(fail.GetFormattedMessage()); 
     } 

     return failures.Count == 0; 
    } 
    catch (Exception ex) 
    { 
     Tools.MessageLogger.LogError(ex.Message); 
     return false; 
    } 
} 

我沒有在文本編輯器編寫這個相當而不是一個適當的IDE,所以如果我犯了一個錯字/做了一些愚蠢的事情,我很抱歉。

+0

非常感謝您的回答。問題出在工作區映射的某個地方,這完全是奇怪的,因爲其他功能都起作用,但是這些信息非常有幫助! – Flobbo