在我的一台机器上,我从任何GetLocalWorkspaceInfo调用中都获得了null的返回值。对于这个简单的程序,我已经隔离到甚至失败的地方:

namespace WorkstationTest
{
    using Microsoft.TeamFoundation.VersionControl.Client;

    class Program
    {
        static void Main()
        {
            string workspaceLocalPath = @"C:\Dev";
            var info = Workstation.Current
                          .GetLocalWorkspaceInfo(workspaceLocalPath);

            // info is always null here
        }
    }
}

我已经检查过的内容:
  • 完全相同的代码可以在我的另一台机器上运行。
  • 我已经验证我在C:\Dev上有一个工作区

  • 我已经在另一个目录中创建了一个新的工作区,并更改了代码中的workspaceLocalPath变量以使其匹配。
  • 我咨询过the documentation,该声明指出返回值将为null if the path is not in a workspace。根据上图,路径应位于工作空间中。

  • 然而,一切似乎都表明这应该可行。我有什么想念的吗?

    最佳答案

    从公司的TFS2013迁移到TFS2017之后,我在Workstation.Current.GetLocalWorkspaceInfo上遇到了同样的问题。

    对我有用的是对 Workstation.EnsureUpdateWorkspaceInfoCache 的调用:

    TfsTeamProjectCollection tpc = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri("<your-tfs-uri-here>"));
    VersionControlServer tfServer = tpc.GetService<VersionControlServer>();
    Workstation.Current.EnsureUpdateWorkspaceInfoCache(tfServer, tfServer.AuthorizedUser);
    

    我将以上代码行添加到使用GetLocalWorkspaceInfo的TFS代理类的构造函数中。

    关于c# - TFS API : GetLocalWorkspaceInfo always returns null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15956307/

    10-10 16:15