使用GetWorkspace连接到Team Foundation Server工作区

时间:2009-07-14 13:19:53

标签: c# version-control tfs workspace

我是Team Foundation Server的新手,我正在尝试使用c#以编程方式连接到项目。我有以下代码块...

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根目录引用项目名称的示例。

谢谢,

3 个答案:

答案 0 :(得分:6)

问题是上面代码中的“Test”是指TFS工作区,而不是TFS中的项目。 TFS使用一种名为workspaces的想法,将目录和项目映射到。

您正在使用的工作区在源代码管理浏览器windwo中显示在顶部。它说:'Workspace:',然后是您正在使用的工作区的名称。

以下是有关工作空间的良好资源:http://www.woodwardweb.com/teamprise/000333.html

然后您可能需要从TFS获取一些文件夹映射。 TFS文档很少,我用它完成的大部分工作都需要一些试验和错误才能理解TFS的工作原理,以及API与Visual Studio中使用源代码管理资源管理器的不同之处。

答案 1 :(得分:0)

像布莱恩说的那样,你对工作空间是什么感到困惑。他的链接很好:http://www.woodwardweb.com/teamprise/000333.html

如果您只想查询版本控制系统的历史信息而不检查/签出任何文件,则根本不需要工作区。只需使用VersionControlServer对象。

  • QueryItems =“tf dir”
  • QueryItemsExtended =“tf properties”
  • QueryPendingChanges =“tf status”
  • QueryHistory =“tf history” - 注意,枚举会通过产量回报
  • 导致额外的服务器往返
  • 等等

答案 2 :(得分:0)

我有同样的问题,我相信这是因为VS的WorkSpace映射了多个项目。所以我创建了一个只有一个映射项目的新WorkSpace。

我的解决方案: 从VS打开CMD 运行波纹管线:crn

像这样:

tf workspace /new /s:http://tfs2010.server.com:8080/tfs

系统将提示您设置新的WorkSpace: 名称:您喜欢的工作区名称(没有空格或特殊字符) 源控制文件夹:C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>tf workspace /new /s:http://tfs2010.server.com:8080/tfs 本地文件夹:$/FolderName

在您的代码中使用输入的WorkSpace名称

C:\FolderName