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

Revit插件InvokeMember加载DocumentFormat.OpenXml 2.16.0报找不到文件错误

Revit动态加载外部命令OpenXml依赖缺失报错问题

解决方案背景

  • 开发了名为kdsRibbon的Revit外部应用,用于在Revit中创建名为KDS TOOLS的功能区,功能区包含多个功能面板与操作按钮。
  • 按钮绑定逻辑:通过.InvokeMember属性将每个按钮关联至独立解决方案中的外部命令,功能区读取指定路径下外部命令的.dll文件,执行外部命令的Execute类。该模式支持无需重启Revit即可快速迭代外部命令,有效提升开发效率。

问题现象

功能区绑定的其中一个外部命令为ExportXLTM,对应按钮名称为Export/Import Excel,预期功能为将指定数据导出为.xltm格式的Excel文件。
实现该功能需要引用DocumentFormat.OpenXml组件支撑Excel导出相关能力,通过Nuget安装DocumentFormat.OpenXML后解决方案可正常构建,但调试过程中始终触发如下错误:

System.IO.FileNotFoundException: 'Could not load file or assembly 'DocumentFormat.OpenXml, Version=2.16.0.0, Culture=neutral, PublicKeyToken=8fb06cb64d019a17' or one of its dependencies. The system cannot find the file specified.'

当前梳理的程序执行链路为:kdsRibbon触发按钮逻辑 --> 动态调用外部命令 --> 外部命令启动运行 --> 加载DocumentFormat.OpenXml组件依赖 --> 抛出上述文件找不到错误。

已完成排查操作

已检索同类错误的通用解决方案并逐一验证,问题仍未解决,已尝试的操作包括:

  • 将DocumentFormat.OpenXml对应引用的「复制本地」属性设置为True
  • 确认DocumentFormat.OpenXML与WindowsBase均已正确引入对应解决方案
  • 尝试将两个依赖.dll文件拷贝至多个可能的检索路径,均未解决问题,涉及路径包括:
    • 程序集引用默认文件夹
    • 与kdsRibbon.dll、ExportXLTM.dll同部署目录(二者本身已放在同一路径下)
    • ExportXLTM解决方案的bin输出目录
  • 确认System.IO在功能区程序与外部命令项目中均已正确引用,错误仍复现。

待确认疑问

  • 是否存在遗漏的必要配置项?
  • 是否因使用InvokeMember动态加载的实现方式,导致程序集检索路径出现偏差?
  • 目前已尝试所有可想到的排查方案,问题始终无法解决,求可行的排查及解决思路。

补充说明

因账号权限限制无法直接嵌入截图,相关参考材料包括:kdsRibbon功能区界面截图、ExportXLTM调试报错截图、kdsRibbon中InvokeMember动态加载逻辑及报错位置截图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:15:17