在我的一台机器,我得到任何空的返回值GetLocalWorkspaceInfo
电话。 我已经隔离,问题在那里,即使失败,这个简单的程序:
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
}
}
}
我已经检查:
然而,一切都似乎在暗示这应该工作。 有什么我可能会错过?
Answer 1:
我知道这是旧的文章,只是想分享,我们有解决方法,通过使用VersionControlServer.QueryWorkspaces来查询他/她的机器上的用户的所有工作区。
private static Workspace FindWorkspaceByPath(TfsTeamProjectCollection tfs, string workspacePath)
{
VersionControlServer versionControl = tfs.GetService<VersionControlServer>();
WorkspaceInfo workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(workspacePath);
if (workspaceInfo != null)
{
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));
}
Answer 2:
当执行tf workspaces
在Visual Studio 2010中的命令提示符(我的电脑),它说No workspace matching * found on this computer
,但在Visual Studio 2012中执行相同的命令,当它返回我所有的预期工作空间。
这个问题可以通过以下任一方式来解决:
Answer 3:
从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);
我加了上面的代码行到我的TFS代理类的使用GetLocalWorkspaceInfo构造。
Answer 4:
在我的情况下,由于发生在TFS缓存把VersionControl.config文件这个问题(C:\用户\ DeepakR \应用程序数据\本地\微软\的Team Foundation \ 5.0 \缓存\挥发性\ 0cb76a25-2556-4bd6-ADAA-5e755ac07355_http)文件夹无二一甩即如预期所配置的工作空间信息无法获得。
因此,它基本上需要VersionControl.config文件的刷新。 自动Refersh发生在Visual Studio中被再次加载,即从服务器拉配置工作区的信息,并更新配置文件或者即使我们执行命令TF实用程序(tf.exe工作区/集:TFSURL)
Microsoft.TeamFoundation.VersionControl.Client的(v12.0.0.0)工作站类有一个功能EnsureUpdateWorkspaceInfoCache它会做同样的伎俩
VersionControlServer VCS =(VersionControlServer)tpc.GetService(typeof运算(VersionControlServer)); Workstation.Current.EnsureUpdateWorkspaceInfoCache(VCS,Environment.UserName);
https://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.versioncontrol.client.workstation.ensureupdateworkspaceinfocache(v=vs.120).aspx
希望建议有助于解决这个问题。
Answer 5:
我曾使用Visual Studio 2017年,再加上安装了几个其他版本和一些当地的工作区最近这个问题(今天)。
我结束了更新“Team Foundation Server的客户端” NuGet包到最新版本( 15.x
通过“管理的NuGet包”菜单),并固定它。
我当时还首先删除现有的项目引用,但该部分可能取决于你所需要的。
Answer 6:
这是如何找到工作区时,你有服务器的路径:
Workspace[] workspaces = _versionControl.QueryWorkspaces(null, Environment.UserName, Environment.MachineName);
return workspaces.FirstOrDefault(w => !string.IsNullOrEmpty(w.TryGetLocalItemForServerItem(ConstDefaultFlowsTfsPath)));
凡ConstDefaultFlowsTfsPath
是服务器的路径"$"
例如: "$/MyCompany/Services/DiagnosticsFlows"
您也可以替换最后一行:
return workspaces.FirstOrDefault(w => !string.IsNullOrEmpty(w.GetServerItemForLocalItem(myLocalPath)));
这应该为你工作了。
Answer 7:
只需使用的招数运行 。
没有什么会不正确的DLL参考正常工作。 下有固定的同样的问题,我有5天,因为它是我的拧时间可达。
将下面的DLL在项目的bin文件夹,并给所有的DLL的整个解决方案的参考。 如果有错误出现,如“参考不能给予”忽略它,并从给参考,而不是仅仅的地方也是错误创造bin文件夹中的DLL该项目将建设过程中会自动采取跳过DLL
DLL的:
Microsoft.TeamFoundation.Client.dll
Microsoft.TeamFoundation.Common.dll
Microsoft.TeamFoundation.Core.WebApi.dll
Microsoft.TeamFoundation.TestManagement.Client.dll
Microsoft.TeamFoundation.TestManagement.Common.dll
Microsoft.TeamFoundation.Work.WebApi.dll
Microsoft.TeamFoundation.WorkItemTracking.Client.DataStoreLoader.dll
Microsoft.TeamFoundation.WorkItemTracking.Client.dll
Microsoft.TeamFoundation.WorkItemTracking.Common.dll
Microsoft.TeamFoundation.WorkItemTracking.Controls.dll
Microsoft.TeamFoundation.WorkItemTracking.Proxy.dll
Microsoft.TeamFoundation.WorkItemTracking.WebApi.dll
Microsoft.VisualStudio.Services.Client.Interactive.dll
Microsoft.VisualStudio.Services.Common.dll
Microsoft.VisualStudio.Services.WebApi.dll
Microsoft.WITDataStore32.dll
Microsoft.WITDataStore64.dll
上述DLL的可以在下面的路径中,如果系统中安装MTM或TFS
路径:C:\ Program Files文件(x86)的\微软的Visual Studio \ 2017年\企业\ Common7 \ IDE \ CommonExtensions \微软\ TeamFoundation \团队资源管理器
文章来源: TFS API: GetLocalWorkspaceInfo always returns null