来自DocumentFormat.OpenXml的程序集加载错误

Cha*_*ana 5 .net assembly-loading closedxml

使用Microsoft ClosedXmlDocumentFormat.OpenXmlNuGet实用程序包时出现错误。更新了这些NuGet程序包(从2.7.2版到2.8.1版)后,现在出现以下异常:

异常System.IO.FileLoadException:无法加载文件或程序集'DocumentFormat.OpenXml,版本= 2.7.2.0,区域性=中性,PublicKeyToken = 8fb06cb64d019a17'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040)

当我查看解决方案项目中的相关程序集时,它引用了正确的版本(2.8.1)。查看NuGet程序包管理器,没有对旧版2.7.2的引用(4个项目对新版2.8.1的引用)。在任何有关版本2.7.2的项目引用中,我都找不到任何提及。正在执行的应用程序文件夹中的文件也是正确的文件(2.8.1)(通过查看项目属性窗口的详细信息选项卡)。在我的解决方案中的其他地方,对旧版本号的引用(显然是导致此异常的地方)可以找到吗?

附加信息:我已经grep在执行此操作的应用程序目录(包括子目录)中的所有文件(包括二进制文件)上执行了操作,并且2.7.2找不到字符串。

另外,当我在Visual Studio中调试此程序时,它不会抛出异常。但是,当我在部署的构建文件夹中运行它时,我得到FileLoadException。

Cee*_* it 1

包裹有问题。我升级到最近发布的 2.10.0,所有与清单不匹配相关的问题都消失了。

使用 Microsoft 的 DocumentFormat.OpenXml.dll 版本 2.10.0 最后稳定版的 nuget 包版本意味着构建输出将仅包含 DocumentFormat.OpenXml.dll,它是正确的版本,并且是运行时所需的唯一文件,而不再是 DocumentFormat。 OpenXml.abcdll - 请务必将其删除。

2.10.0 仍然支持旧版本的 .NET 框架,并通过了我的案例中的所有测试,您的情况可能会有所不同。