DocumentFormat.OpenXml

时间:2018-04-04 13:42:29

标签: .net closedxml assembly-loading

我使用Microsoft ClosedXmlDocumentFormat.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。

2 个答案:

答案 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框架的较旧版本,并且在我的情况下通过了所有测试,您的工作量可能会有所不同。