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

问题描述 投票:0回答:3

我在使用 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。

.net closedxml assembly-loading
3个回答
2
投票

我刚刚遇到了同样的问题 - ClosedXML 0.94.0 和 DocumentFormat.OpenXML 2.10.0。
在开发机器上工作正常,部署到服务器时无法找到正确的程序集。我正在使用 .NET 4.7.2
尝试了不同的东西,直到我添加绑定重定向从 2.7.2 到 2.10.0


1
投票

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

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

2.10.0 仍然支持旧版本的 .NET 框架并通过了我的所有测试,你的里程可能会有所不同。


0
投票

我只是简单的方法来解决它。

  • 删除解决方案资源管理器中“引用”中的引用
  • 通过Project->Add Reference->search for reference the name of the reference the error, select it, and add it再次添加。

它像一个魅力一样为我解决了

© www.soinside.com 2019 - 2024. All rights reserved.