Подключение к рабочей области Team Foundation Server с использованием GetWorkspace - PullRequest
3 голосов
/ 14 июля 2009

Я новичок в 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 Team Explorer. У меня есть безопасный доступ к нему, и я использую его для проверки и вывода кода, просто отлично

Я не уверен, правильно ли на мой код ссылается проект Test. Я ищу пример того, как ссылаться на имя проекта из корня TFS.

Спасибо,

Ответы [ 3 ]

6 голосов
/ 14 июля 2009

Проблема в том, что «Тест» в приведенном выше коде относится к рабочей области TFS, а не к проекту в TFS. TFS использует идею, называемую рабочими пространствами, с которой вы сопоставляете каталоги и проекты.

Используемое рабочее пространство отображается в проводнике управления источниками windwo вверх. Там написано: «Рабочая область:», а затем имя рабочей области, которую вы используете.

Вот хороший ресурс о рабочих пространствах: http://www.woodwardweb.com/teamprise/000333.html

Тогда вам, вероятно, потребуется также получить некоторые сопоставления папок из TFS. Документация по TFS скудна, и большая часть работы, которую я проделал с ней, требует некоторых проб и ошибок, чтобы понять, как работает TFS и чем API отличается от использования проводника управления источниками в Visual Studio.

0 голосов
/ 30 июня 2016

У меня была та же проблема, я думаю, это потому, что WorkSpace от VS был сопоставлен с несколькими проектами. Поэтому я создал новый 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);
0 голосов
/ 15 июля 2009

Как сказал Брайан, вы не понимаете, что такое рабочее пространство. Его ссылка хорошая: http://www.woodwardweb.com/teamprise/000333.html

Если вы просто хотите запросить историческую информацию о системе контроля версий, а не регистрировать / извлекать какие-либо файлы, вам вообще не нужно рабочее пространство. Просто используйте объект VersionControlServer.

  • QueryItems = "tf dir"
  • QueryItemsExtended = "tf properties"
  • QueryPendingChanges = "tf status"
  • QueryHistory = "tf history" - будьте осторожны, перечисление вызывает дополнительные обходы сервера через возврат дохода
  • и т. Д.
...