2009-07-14 42 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); 
相关问题