2009-07-14 40 views
3

我是Team Foundation Server的新手,我嘗試使用c#編程連接到項目。我有下面的代碼塊...使用GetWorkspace連接到Team Foundation Server工作區

string serverName = "http://tfs01:8080"; 
TeamFoundationServer tfs = new TeamFoundationServer(serverName); 
VersionControlServer version = (VersionControlServer)tfs.GetService(typeof (VersionControlServer)); 
Workspace workspace = version.GetWorkspace("Test", version.AuthenticatedUser); 
MessageBox.Show(workspace.Name); 

當我執行我收到以下錯誤代碼......

TF14061: The workspace Test;vercuskis does not exist. 

「測試」項目是關閉根的,是分享範圍從VS 2008團隊資源管理器,我確實有安全訪問權限,我用它來檢查和檢出代碼就好了

我不確定是否在代碼中正確引用了「Test」項目。我正在尋找如何從TFS根目錄中引用項目名稱的示例。

謝謝

回答

6

的問題是,上述「測試」在你的代碼是指TFS的工作空間,而不是在TFS項目。 TFS使用一個叫做工作區的想法,將目錄和項目映射到其中。

您正在使用的工作區顯示在源代碼管理器windwo頂部。它說:'工作區:',然後是您正在使用的工作區的名稱。

下面是關於工作區一個很好的資源:http://www.woodwardweb.com/teamprise/000333.html

然後,您將需要大概從TFS得到一些文件夾映射爲好。 TFS文檔非常稀少,我所做的大部分工作都需要一些試驗和錯誤來了解TFS的工作方式,以及API與Visual Studio中使用源代碼管理器的不同之處。

+0

阿好,我知道,... ...那麼我想它不是我要找的工作區。我想連接到該項目並查看源項目中的所有項目。我猜我必須查詢TeamFoundationServer對象才能進入。 – 2009-07-14 13:39:26

0

就像Brian說的,你對工作區是什麼感到困惑。他的鏈接是好的:http://www.woodwardweb.com/teamprise/000333.html

如果您只想查詢有關版本控制系統的歷史信息,而不簽入/簽出任何文件,則完全不需要工作區。只需使用VersionControlServer對象。

  • QueryItems = 「TF目錄」
  • QueryItemsExtended = 「TF特性」
  • QueryPendingChanges = 「TF狀態」
  • QueryHistory = 「TF歷史」 - 當心,枚舉通過導致額外的服務器往返產量返回
  • 等等等等
0

我有同樣的問題,我相信這是貝科使用來自VS的WorkSpace與多個項目進行映射。所以我創建了一個只有一個映射項目的新WorkSpace。

我工作的解決方案: 打開CMD從VS 運行波紋線:tf workspace /new /s:http://tfs2010.server.com:8080/tfs

像這樣:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>tf workspace /new /s:http://tfs2010.server.com:8080/tfs 

系統將提示您設置新的工作區: 名稱:工作區(無空格或特殊字符) 源文件控制文件夾:$/FolderName 本地文件夾:C:\FolderName

在你的代碼中使用在輸入的工作空間名稱

this._server = config.GetAttribute("server"); 
    **this._workspace = config.GetAttribute("workspace");** 
    this._user = config.GetAttribute("user"); 
    this._password = config.GetAttribute("psw"); 
    TeamFoundationServer tfs = new TeamFoundationServer(this._server, new System.Net.NetworkCredential(this._user, this._password)); 
    tfs.Authenticate(); 
    VersionControlServer versionControl = (VersionControlServer)tfs.GetService(typeof(VersionControlServer)); 
    Workspace ws = versionControl.GetWorkspace(this._workspace, this._user); 
相關問題