调用Workspace.Merge
时我有一个例外。我正在访问VersionControlExt
来自VisualStudio。下面的代码可以访问Visual Studio TFS资源管理器窗口对象(在环境中处于活动状态并且用户已登录)。
VersionControlExt vce;
vce = _applicationObject.GetObject("Microsoft.VisualStudio.TeamFoundation.VersionControl.VersionControlExt") as VersionControlExt;
MergeCandidate[] candidates = version.GetMergeCandidates(source, dest, RecursionType.Full);
Workspace ws = vce.Explorer.Workspace;
foreach (MergeCandidate mc in candidates)
{
string comment = mc.Changeset.Comment;
ChangesetVersionSpec csvs = new ChangesetVersionSpec(mc.Changeset.ChangesetId);
// HERE NULL REFERENCE EXCEPTION IS THROWN
GetStatus gs = ws.Merge(source, dest, csvs, csvs, LockLevel.None, RecursionType.Full, MergeOptionsEx.None);
}
异常详情
TargetSite:{System.String get_AuthorizedUser()}
栈跟踪
在 Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer.get_AuthorizedUser(个)\ r \ n 在 Microsoft.TeamFoundation.VersionControl.Client.Workspace.get_DisplayName(个)\ r \ n 在 Microsoft.TeamFoundation.VersionControl.Client.Workspace.RequireLocal(个)\ r \ n 在 Microsoft.TeamFoundation.VersionControl.Client.Workspace.Merge(ItemSpec source,String targetPath,VersionSpec versionFrom,VersionSpec versionTo, LockLevel lockLevel,MergeOptionsEx mergeOptions,String [] propertyNameFilters)\ r \ n at Microsoft.TeamFoundation.VersionControl.Client.Workspace.Merge(ItemSpec source,String targetPath,VersionSpec versionFrom,VersionSpec versionTo, LockLevel lockLevel,MergeOptionsEx mergeOptions)\ r \ n at Microsoft.TeamFoundation.VersionControl.Client.Workspace.Merge(字符串 sourcePath,String targetPath, VersionSpec versionFrom,VersionSpec versionTo,LockLevel lockLevel, RecursionType递归, MergeOptionsEx mergeOptions)\ r \ n
答案 0 :(得分:1)
什么是例外的类型和消息?
本地哪个版本的团队资源管理器?什么版本的TFS服务器?
在堆栈顶部给定get_AuthorizedUser
,我怀疑这是TFS客户端无法通过检查当前目录是否在映射工作空间中进行身份验证 - 启动并且当前用户已在TFS上获得授权。
答案 1 :(得分:0)
发现问题。为了使用TFS功能,需要引用Microsoft.TeamFoundation.VersionControl.Client.dll。我安装了9.0 Studio和10.0 Studio。我在实际使用9.0 studio时引用了10.0的dll。愚蠢的错误,但它需要花费数小时来调试。