我使用Microsoft ClosedXml
和DocumentFormat.OpenXml
nuGet实用程序包收到错误消息。当我上次更新这些nuGet包时(从版本2.7.2到版本2.8.1),我开始得到这个例外:
Exception System.IO.FileLoadException:无法加载文件或程序集 ' DocumentFormat.OpenXml,Version = 2.7.2.0,Culture = neutral, 公钥= 8fb06cb64d019a17'或其中一个依赖项。该 装配集会的明显定义与集会不符 参考。 (HRESULT异常:0x80131040)
当我查看我的解决方案项目中的相关程序集时,它引用了正确的版本,(2.8.2)。查看nuGet包管理器,没有对旧的2.7.2版本的引用(4个项目引用了新版本--2.8.1)。在版本2.7.2的任何项目引用中都没有提及。执行应用程序文件夹中的文件也是正确的(2.8.1)(通过查看项目属性窗口的详细信息选项卡)。 在我的解决方案中的其他位置可能会找到旧版本号(显然导致此异常)的引用?
附加信息:我对执行此操作的应用程序目录中的所有文件(包括二进制文件)执行了grep
,包括子目录,并且无法找到字符串2.7.2
。
此外,当我在Visual Studio中调试它时,它可以工作而不会抛出异常。但是当我在部署的构建文件夹中运行它时,我得到了FileLoadException。
答案 0 :(得分:1)
我只是遇到了同样的问题-使用DocumentFormat.OpenXML 2.10.0的ClosedXML 0.94.0。
在开发机器上可以正常工作,在部署到服务器时找不到正确的程序集。我正在使用.NET 4.7.2
尝试了不同的方法,直到我将绑定重定向从2.7.2添加到2.10.0之前,所有方法都无效
答案 1 :(得分:0)
该包装有故障。我升级到了最近发布的2.10.0,所有与明显不匹配有关的问题都消失了。
使用Microsoft上次稳定的DocumentFormat.OpenXml.dll版本2.10.0的nuget软件包版本意味着构建输出将仅包含DocumentFormat.OpenXml.dll是正确的版本,并且仅包含运行时所需的文件,并且不再一个DocumentFormat.OpenXml.abcdll-请确保将其删除。
2.10.0仍支持.NET框架的较旧版本,并且在我的情况下通过了所有测试,您的工作量可能会有所不同。