【发布时间】:2017-08-03 09:14:47
【问题描述】:
我的问题与TFS API: GetLocalWorkspaceInfo always returns null 非常相似,只是我使用的是 Visual Studio 2015,所以这些答案对我来说并不适用。我尝试了GetAllLocalWorkspaceInfo,它也返回一个null。
谢谢
【问题讨论】:
标签: c# tfs visual-studio-2015
我的问题与TFS API: GetLocalWorkspaceInfo always returns null 非常相似,只是我使用的是 Visual Studio 2015,所以这些答案对我来说并不适用。我尝试了GetAllLocalWorkspaceInfo,它也返回一个null。
谢谢
【问题讨论】:
标签: c# tfs visual-studio-2015
我已经测试了你在 VS 2015 中提到的代码 sn-p 并且得到了成功的结果。确保您已引用 VS 2015 中的 dll:c:\program files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer
并且在sn-p代码中,需要使用Console.WriteLine来输出你想要的工作空间信息:
private static Workspace FindWorkspaceByPath(TfsTeamProjectCollection tfs, string workspacePath)
{
VersionControlServer versionControl = tfs.GetService<VersionControlServer>();
WorkspaceInfo workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(workspacePath);
if (workspaceInfo != null)
{
Console.WriteLine(workspaceInfo.Computer);
Console.WriteLine(workspaceInfo.DisplayName);
return versionControl.GetWorkspace(workspaceInfo);
}
//No Workspace found using method 1, try to query all workspaces the user has on this machine.
Workspace[] workspaces = versionControl.QueryWorkspaces(null, Environment.UserName, Environment.MachineName);
foreach (Workspace w in workspaces)
{
foreach (WorkingFolder f in w.Folders)
{
if (f.LocalItem.Equals(workspacePath))
{
return w;
}
}
}
throw new Exception(String.Format("TFS Workspace cannot be determined for {0}.", workspacePath));
}
【讨论】:
我发现这个问题是因为包版本,所以如果你有这个问题,请检查你的包版本是否与你的 Visual Studio 版本匹配
【讨论】: