2013-04-11 101 views
1

我使用创建签入策略:如何编程方式获得TFS团队项目名称

using Microsoft.TeamFoundation.VersionControl.Client; 

我想从目前的工作空间或PendingCheckin

任何获取当前TFS团队项目名称想法?

+1

你怎么想使用它?工作区和签入可以跨越项目... – bryanmac 2013-04-11 12:17:07

+0

我正在制定签入策略,将当前正在签入的任何文件从本地开发人员工作区复制到其他位置。这个位置会根据它属于哪个团队项目而不同 – jpsnow72 2013-04-11 12:37:43

+0

我没有意识到签入可能会扫描多个项目。如果有帮助,我会为每个团队项目总是有一个不同的工作区,但是我可以为每个项目执行此操作,只要我能以某种方式获取该文件正在签入的所有项目的列表。 – jpsnow72 2013-04-11 12:42:10

回答

2

您可以在这样一个挂起的更改使用VersionControlServer.GetTeamProjectForServerPath

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

这也意味着你可以检测挂起的变化s跨越多个团队项目。


编辑/扩展:

现在我想想,你应该使用本地路径,因为文件你检查可能不会在服务器上,但(增加)。

所以,你可以使用Workspace.GetTeamProjectForLocalPath代替:

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

您可以

BuildDetail.TeamProject 

访问查找大会: C:\ Program Files文件(x86)的\微软的Visual Studio 11.0 \ Common7 \ IDE \ ReferenceAssemblies \ 2.0 \ Microsoft.TeamFoundation。 Build.Client.dll

+0

这是给定的构建(这是与一个项目有关)。我认为他要求给定一个工作区或挂起签入(可以跨越项目)。 – bryanmac 2013-04-11 12:23:13

+0

而我不知道在哪里得到Microsoft.TeamFoundation.Build.Server.dll它看起来像我错过了 – jpsnow72 2013-04-11 12:50:20