无法连接MS Dynamics CRM 365:找不到OrganizationDetail.get_EnvironmentId()方法
解决CRM连接时“找不到OrganizationDetail.get_EnvironmentId()”的问题
问题分析
虽然三台机器的Microsoft.Xrm.Sdk.dll版本号显示一致,但该错误通常是由于实际加载的程序集不匹配导致的——要么是机器上存在其他版本的SDK DLL被优先加载,要么是表面版本号相同但文件内部结构存在差异,EnvironmentId属性的访问器未在加载的DLL中实现。
具体解决方案
检查程序集实际加载路径
使用Windows自带的fuslogvw.exe(程序集绑定日志查看器)排查:- 以管理员身份运行
fuslogvw.exe - 点击“设置”,选择“记录所有程序集绑定到磁盘”
- 复现错误后,查看日志中
Microsoft.Xrm.Sdk.dll的加载路径,确认是否为你预期的目标版本文件。
- 以管理员身份运行
添加程序集绑定重定向
在工具的app.config(或web.config)中添加强制绑定重定向,确保加载指定版本的SDK:<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.Xrm.Sdk" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-9.0.0002.0165" newVersion="9.0.0002.0165" /> </dependentAssembly> </assemblyBinding> </runtime>同步完整部署文件
删除问题机器上工具的现有部署目录,直接从第三台正常机器复制完整的工具文件包(包含所有依赖DLL),避免单独替换单个文件导致依赖缺失。如果使用NuGet管理依赖,在三台机器上执行:# .NET Framework项目 nuget locals all -clear nuget restore # .NET Core/.NET 5+项目 dotnet nuget locals all --clear dotnet restore清理GAC中的冲突版本
以管理员身份打开命令提示符,执行以下命令查看GAC中所有Microsoft.Xrm.Sdk版本:gacutil -l Microsoft.Xrm.Sdk移除所有非目标版本的程序集(替换命令中的版本号为实际要删除的版本):
gacutil -u Microsoft.Xrm.Sdk,Version=xx.xx.xx.xx,Culture=neutral,PublicKeyToken=31bf3856ad364e35验证DLL文件一致性
对比正常机器和问题机器的Microsoft.Xrm.Sdk.dll哈希值,确认文件是否完全相同:certutil -hashfile "C:\路径\Microsoft.Xrm.Sdk.dll" SHA256如果哈希值不同,说明文件已被替换,直接复制正常机器的DLL覆盖问题机器的文件。
内容的提问来源于stack exchange,提问作者ranator2
相关产品推荐
相关产品推荐

