如何解决XRMToolKit连接本地组织时的pluginassembly重复定义错误?
解决XRMToolkit 7.3.4.0连接Dynamics CRM时的程序集冲突错误
问题描述
使用XRMToolkit 7.3.4.0连接本地Dynamics CRM组织时连接失败,错误日志显示代理类型名称冲突:
System.Exception: Failed to Executed Command - WhoAmIRequest : RequestId=xxx : total duration: 00:00:02.3729929 Failed to Executed Command - WhoAmIRequest : RequestId=xxx : total duration: 00:00:02.3729929************ Exception - Failed to lookup current user A proxy type with the name pluginassembly has been defined by another assembly. Current type: XrmToolkit.Crm.ProxyClasses.PlugInAssembly, XrmToolkit.Crm.Proxies, Version=7.3.4.0, Culture=neutral, PublicKeyToken=null, Existing type: CrmSdk.PluginAssembly, CrmLibraries, Version=9.0.0.0, Culture=neutral, PublicKeyToken=xxx Parameter name: pluginassemblyUnable to connect to CRM: A proxy type with the name pluginassembly has been defined by another assembly. Current type: XrmToolkit.Crm.ProxyClasses.PlugInAssembly, XrmToolkit.Crm.Proxies, Version=7.3.4.0, Culture=neutral, PublicKeyToken=null, Existing type: CrmSdk.PluginAssembly, CrmLibraries, Version=9.0.0.0, Culture=neutral, PublicKeyToken=xxx Parameter name: pluginassembly A proxy type with the name pluginassembly has been defined by another assembly. Current type: XrmToolkit.Crm.ProxyClasses.PlugInAssembly, XrmToolkit.Crm.Proxies, Version=7.3.4.0, Culture=neutral, PublicKeyToken=null, Existing type: CrmSdk.PluginAssembly, CrmLibraries, Version=9.0.0.0, Culture=neutral, PublicKeyToken=xxx Parameter name: pluginassemblyUnable to Login to Dynamics CRM Unable to Login to Dynamics CRM at XrmToolkit.Crm.Extensions.ConnectionInfoExtensions.<>c__DisplayClass0_0.<<GetCrmServiceClientAsync>b__0>d.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at XrmToolkit.Crm.Extensions.ConnectionInfoExtensions.<GetCrmServiceClientAsync>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at XrmToolkit.UI.Wpf.Forms.ConnectToOrganization.<ConnectAsync>d__21.MoveNext()
已尝试卸载重装XRMToolkit,但问题未解决。
错误原因
本地环境中同时存在两个定义了pluginassembly代理类型的程序集:
- XRMToolkit自带的
XrmToolkit.Crm.Proxies, Version=7.3.4.0 - 第三方程序集
CrmLibraries, Version=9.0.0.0
XRMToolkit初始化时无法确定使用哪个类型,导致连接失败。
解决步骤
清理全局程序集缓存(GAC)
- 以管理员身份打开命令提示符
- 执行命令移除冲突的程序集:
(将命令中的gacutil /u CrmLibraries,Version=9.0.0.0,Culture=neutral,PublicKeyToken=xxxxxx替换为日志里的公钥令牌) - 清理完成后重启电脑,再尝试连接
检查XRMToolkit安装目录
- 找到XRMToolkit的安装路径(默认路径:
C:\Program Files (x86)\XrmToolkit) - 检查目录下是否存在
CrmLibraries.dll,若存在直接删除该文件,重启XRMToolkit后重试
- 找到XRMToolkit的安装路径(默认路径:
排查本地开发环境残留依赖
- 检查Visual Studio项目中是否引用了
CrmLibraries.dll,确保引用该程序集的项目未在后台运行,或临时移除引用后再启动XRMToolkit - 检查系统PATH环境变量,若包含
CrmLibraries.dll所在目录,临时移除该路径后重启工具
- 检查Visual Studio项目中是否引用了
使用干净用户配置测试
创建新的Windows本地用户,登录后安装XRMToolkit并尝试连接,排除当前用户配置文件中残留的程序集缓存问题
内容的提问来源于stack exchange,提问作者L-Ebarb
相关产品推荐
相关产品推荐

