You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法连接MS Dynamics CRM 365:找不到OrganizationDetail.get_EnvironmentId()方法

解决CRM连接时“找不到OrganizationDetail.get_EnvironmentId()”的问题

问题分析

虽然三台机器的Microsoft.Xrm.Sdk.dll版本号显示一致,但该错误通常是由于实际加载的程序集不匹配导致的——要么是机器上存在其他版本的SDK DLL被优先加载,要么是表面版本号相同但文件内部结构存在差异,EnvironmentId属性的访问器未在加载的DLL中实现。

具体解决方案

  • 检查程序集实际加载路径
    使用Windows自带的fuslogvw.exe(程序集绑定日志查看器)排查:

    1. 以管理员身份运行fuslogvw.exe
    2. 点击“设置”,选择“记录所有程序集绑定到磁盘”
    3. 复现错误后,查看日志中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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 10:15:35