Visual studio 如何在Visual Studio Extension中为当前加载的解决方案项目计算TFS uri和位置

Visual studio 如何在Visual Studio Extension中为当前加载的解决方案项目计算TFS uri和位置,visual-studio,tfs,envdte,visual-studio-sdk,Visual Studio,Tfs,Envdte,Visual Studio Sdk,我正在尝试在我的VisualStudio扩展中,找出当前加载的项目中哪些在TFS中,然后找出每个项目的TFS服务器uri和位置 我希望能够做到以下几点: foreach (EnvDTE.Project project in dte.Solution.Projects) { if (project.IsInTFS) { var uri = project.TFSUri; // http://tfsserver:8080/tfs

我正在尝试在我的VisualStudio扩展中,找出当前加载的项目中哪些在TFS中,然后找出每个项目的TFS服务器uri和位置

我希望能够做到以下几点:

foreach (EnvDTE.Project project in dte.Solution.Projects)
{
    if (project.IsInTFS) {   
        var uri = project.TFSUri;             // http://tfsserver:8080/tfs
        var location = project.TFSLocation;   // $\TeamProject\Project
    }
}
有人能帮我吗

谢谢。

您可以使用该界面通过以下方式完成此操作:

foreach(dte.Solution.Projects中的项目)
{
if(dte.SourceControl.IsItemUnderSCC(project.FileName))
{
var bindings=project.GetSourceControlBindings();
var uri=bindings.ServerName;
var location=bindings.ServerBinding;
//你的逻辑是这样的
}
}
其中,
GetSourceControlBindings
是一种扩展方法:

公共静态SourceControlBindings GetSourceControlBindings(此项目)
{
SourceControl2 sourceControl=(SourceControl2)project.DTE.sourceControl;
返回sourceControl.GetBindings(project.FullName);
}
注意:必须添加对EnvDTE80.dll程序集的引用


如果您只对TFS源代码管理感兴趣,则应再添加一个条件:

if(bindings.ProviderName==“{4CA58AB2-18FA-4F8D-95D4-32DDF27D184C}”)

其中魔术GUID指定Team Foundation源代码管理提供程序。

辉煌!非常感谢尤里!!哦,还有一点,我认为您需要执行dte.SourceControl.IsItemUnderSCC(project.FullName),而不是dte.SourceControl.IsItemUnderSCC(project.FileName)