2011-11-21 54 views
0

如何獲取TFS 2010上當前項目的映射?我需要把單個文件,找出它的映射,並用這些信息我想在另一臺計算機上找到這個文件,這臺計算機映射了相同的工作空間。任何想法我怎麼能做到這一點?如何檢索和設置TFS項目的映射

+0

這是一個廣泛的問題。你能告訴我們到目前爲止你已經做了什麼來解決這個問題嗎? – neontapir

+0

如果您正在使用Visual Studio,則可以在「文件」菜單 - >「源代碼管理」 - >「工作區」中找到映射信息。 – Windy

+0

我有一個應用程序,它與TFS的源代碼控制下的resx文件一起工作。我需要存儲所選resx文件的相對路徑,這些路徑位於我的電腦上,如果有人在其他機器上打開此應用程序,它必須能夠通過設置他的工作區來找到這些文件。所以我想我需要通過工作區設置找出這些文件的相對路徑,然後我需要根據某些用戶工作區的設置來查找本地文件。所以我問我怎麼能做到這一點。我是TFS的新手,所以我不知道從哪裏開始。 – viki

回答

1

所以,我獨自找到解決方案。 首先,我對每個文件

try 
{ 
WorkspaceInfo wsi = Workstation.Current.GetLocalWorkspaceInfo(localFileName); 
TfsTeamProjectCollection tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(wsi.ServerUri); 
Workspace wr = wsi.GetWorkspace(tfs); 
string ret = wr.TryGetServerItemForLocalItem(localFileName); 
return ret; 
} 
catch 
{ 
    return null; 
} 

,比獲得服務器名,另一臺計算機上,我可以加載本地名稱

try 
{ 
Uri serverUri = new Uri(uri); 
TfsTeamProjectCollection tfs = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(serverUri); 
VersionControlServer vcs = (VersionControlServer)tfs.GetService(typeof(VersionControlServer)); 
Workstation.Current.EnsureUpdateWorkspaceInfoCache(vcs, Environment.UserName); 
Workspace wr = vcs.GetWorkspace(Environment.MachineName, Environment.UserName); 
string ret=wr.TryGetLocalItemForServerItem(serverFileName); 
return ret; 
} 
catch 
{ 
    return null; 
} 

它有一定的侷限性,但工作非常適合我。

+0

我需要參考哪些裝配來完成這項工作? –

1

你的問題有點不清楚。

你的主要目標是什麼?

如果您安裝Team Foundation Sidekicks,您可以看到一個名爲「Workspace Sidekick」的視圖。

在那裏你可以通過computername,所有者(用戶)和訪問日期(第一/最後)進行過濾。

使用TFS Sidekicks可以更輕鬆地找到映射的工作區。

Workspace Sidekick

+0

Defo推薦TFS Sidekicks,但是我不確定問題的解決方法是否正確,如果有人使用了一些不合理的本地映射,那麼它們應該遵循標準設置,這個文件應該位於相對合理的位置。 –