我在使用 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, 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。
我刚刚遇到了同样的问题 - ClosedXML 0.94.0 和 DocumentFormat.OpenXML 2.10.0。
在开发机器上工作正常,部署到服务器时无法找到正确的程序集。我正在使用 .NET 4.7.2
尝试了不同的东西,直到我添加绑定重定向从 2.7.2 到 2.10.0
包裹有问题。我升级到最近发布的 2.10.0,所有与清单不匹配相关的问题都消失了。
使用 Microsoft 的 DocumentFormat.OpenXml.dll 2.10.0 版的 nuget 包版本最后稳定意味着构建输出将仅包含 DocumentFormat.OpenXml.dll 是正确的版本并且只包含运行时所需的文件,不再是 DocumentFormat .OpenXml.a.b.c.dll - 一定要删除它。
2.10.0 仍然支持旧版本的 .NET 框架并通过了我的所有测试,你的里程可能会有所不同。
我只是简单的方法来解决它。
它像一个魅力一样为我解决了