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

无法加载程序集DocumentFormat.OpenXml问题求助(已尝试常规方案)

解决Visual Studio 2012中ClosedXML 0.93关联的“Could not load file or assembly 'DocumentFormat.OpenXml’”报错

我完全懂你的糟心——已经试过了大家都在提的安装并引用DocumentFormat.OpenXml 2.5的方案,可还是栽在这个报错上。明明VS2012已经识别了ClosedXML 0.93和它依赖的DocumentFormat.OpenXml 2.5,dll也都放到了exe旁边,问题却依旧存在。咱们得从更深层的地方排查,给你几个针对性的方案:

  • 配置程序集绑定重定向
    ClosedXML 0.93对DocumentFormat.OpenXml的版本有严格依赖,有时候哪怕你引用了2.5,运行时还是会尝试加载其他版本的程序集。你需要在项目的app.config(Web项目则是web.config)里添加绑定重定向配置,强制指定使用2.5版本:

    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="DocumentFormat.OpenXml" publicKeyToken="8fb06cb64d019a17" culture="neutral" />
          <!-- 把oldVersion范围和newVersion改成你实际引用的精确版本 -->
          <bindingRedirect oldVersion="0.0.0.0-2.5.5631.0" newVersion="2.5.5631.0" />
        </dependentAssembly>
      </assemblyBinding>
    </runtime>
    

    你可以在VS里右键DocumentFormat.OpenXml引用→属性,查看“版本”字段,把配置里的版本号换成这个精确值。

  • 确认“复制本地”属性已开启
    虽然你已经把dll放到了exe旁边,还是要检查VS里的引用设置:右键DocumentFormat.OpenXml和ClosedXML的引用→属性,确保“复制本地”选项是True。这个属性有时候会因为项目配置变更被意外重置,重新确认下能避免很多加载问题。

  • 检查项目目标框架版本
    ClosedXML 0.93要求的最低.NET框架版本是4.0,而VS2012默认可能有不同的设置。右键你的项目→属性→应用程序,查看“目标框架”是否是.NET Framework 4.0或更高版本。如果是更低的版本,很可能导致程序集加载失败。

  • 清理缓存并重新生成解决方案
    VS的缓存有时候会搞出奇怪的引用问题,试试这几步:

    1. 点击菜单栏的「生成」→「清理解决方案」
    2. 手动删除项目下的bin和obj文件夹
    3. 再点击「生成」→「重新生成解决方案」
  • 排查GAC中的冲突版本
    如果你的系统全局程序集缓存(GAC)里安装了其他版本的DocumentFormat.OpenXml,运行时可能会优先加载GAC里的版本,和ClosedXML依赖的2.5版本冲突。你可以打开管理员权限的命令提示符,运行gacutil /l DocumentFormat.OpenXml查看GAC里的版本。如果有其他版本,可以暂时移除(操作GAC需谨慎),或者通过上面的绑定重定向强制指定使用2.5版本。

内容的提问来源于stack exchange,提问作者J R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:18:47