Как программно получить название командного проекта TFS

Я создаю политику регистрации, используя:

using Microsoft.TeamFoundation.VersionControl.Client;

Я хочу получить текущее имя командного проекта TFS из текущего рабочего пространства или из PendingCheckin

Есть идеи?

2 ответа

Решение

Вы можете использовать VersionControlServer.GetTeamProjectForServerPath для ожидающих изменений, таким образом:

var pendingChange = pendingCheckin.GetAllPendingChanges().FirstOrDefault();
if(pendingChange != null) {
    return vcs.GetTeamProjectForServerPath(pendingChange.ServerItem);
}

Это также означает, что вы можете определить, охватывают ли ожидающие изменения несколько командных проектов.


Редактировать / расширения:

Теперь, когда я думаю об этом, вам, вероятно, следует использовать локальный путь, поскольку проверяемые файлы могут еще не находиться на сервере (добавляет).

Таким образом, вместо этого вы можете использовать Workspace.GetTeamProjectForLocalPath:

var workspace = pendingCheckin.GetWorkspace();
var pendingChange = pendingCheckin.GetAllPendingChanges().FirstOrDefault();
if(pendingChange != null) {
    return workspace.GetTeamProjectForLocalPath(pendingChange.LocalItem);
}

Вы можете получить к нему доступ с

  BuildDetail.TeamProject

Найдите сборку в: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.TeamFoundation.Build.Client.dll

Другие вопросы по тегам