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.

“测试”项目脱离了根目录,在 VS 2008 团队资源管理器中可见,我确实可以安全访问它,我用它来签入和签出代码就好了

我不确定我的代码中是否正确引用了“测试”项目。我正在寻找如何从 TFS 根目录中引用项目名称的示例。

谢谢,

4

3 回答 3

6

问题是上面代码中的“测试”指的是 TFS 工作区,而不是 TFS 中的项目。TFS 使用一种称为工作空间的想法,您可以将目录和项目映射到该想法。

您正在使用的工作区显示在顶部的源代码管理资源管理器中。它说:“工作区:”,然后是您正在使用的工作区的名称。

这是关于工作空间的一个很好的资源:http ://www.woodwardweb.com/teamprise/000333.html

然后,您可能还需要从 TFS 获取一些文件夹映射。TFS 文档很少,我使用它完成的大部分工作都需要反复试验才能了解 TFS 的工作原理,以及该 API 与在 Visual Studio 中使用源代码控制浏览器有何不同。

于 2009-07-14T13:31:42.790 回答
0

正如布赖恩所说,您对工作空间是什么感到困惑。他的链接很好:http ://www.woodwardweb.com/teamprise/000333.html

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

  • QueryItems = "tf 目录"
  • QueryItemsExtended = "tf 属性"
  • QueryPendingChanges = "tf 状态"
  • QueryHistory = "tf history" -- 请注意,枚举会通过yield return导致额外的服务器往返
  • 等等等等
于 2009-07-15T13:15:23.007 回答
0

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

我的工作解决方案:从 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

系统将提示您设置新的 WorkSpace: 名称:您喜欢的工作空间名称(无空格或特殊字符) 源代码管理文件夹:$/FolderName 本地文件夹:C:\FolderName

在您的代码中使用输入的 WorkSpace Name

    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);
于 2016-06-30T08:13:38.097 回答