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

3

我是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.

"Test"项目位于根目录下,可以从VS 2008 Team Explorer中看到,我有访问权限,并且使用它来成功地签入和签出代码。

我不确定在我的代码中是否正确引用了"Test"项目。我正在寻找一个关于如何引用TFS根目录下的项目名称的示例。

谢谢!

3个回答

6
问题在于,你上面的代码中的“Test”是指TFS工作区,而不是TFS项目。TFS使用一个叫做工作区的概念,你可以将目录和项目映射到其中。
你正在使用的工作区显示在源代码控制资源管理器窗口顶部。它说:“工作区:”,然后是你正在使用的工作区的名称。
这里有一个关于工作区的好资源:http://www.woodwardweb.com/teamprise/000333.html 然后你可能需要从TFS获取一些文件夹映射。TFS文档很少,我所做的大部分工作都需要一些试错来理解TFS的工作原理,以及API与在Visual Studio中使用源代码控制资源管理器的不同之处。

啊,好的,我明白了……那么我猜这不是我要找的工作区。我想连接到项目并查看该项目源代码控制中的所有项。我猜我需要查询TeamFoundationServer对象才能进入其中。 - user26901

0

我遇到了同样的问题,我认为是因为VS的工作区映射了多个项目。所以我创建了一个仅映射了一个项目的新工作区。

我的解决方案: 从VS中打开CMD 运行以下命令: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);

0

就像Brian所说的,你对工作区的概念感到困惑。他提供的链接很不错:http://www.woodwardweb.com/teamprise/000333.html

如果你只是想查询版本控制系统的历史信息而不是检入/检出任何文件,那么你根本不需要工作区。只需使用VersionControlServer对象即可。

  • QueryItems = "tf dir"
  • QueryItemsExtended = "tf properties"
  • QueryPendingChanges = "tf status"
  • QueryHistory = "tf history" -- 注意,枚举会通过yield return导致额外的服务器往返
  • 等等等等

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接