.net 从DocumentFormat.OpenXml加载程序集时出错

t5fffqht  于 2023-03-20  发布在  .NET
关注(0)|答案(3)|浏览(305)

我在使用Microsoft ClosedXmlDocumentFormat.OpenXml NuGet实用程序包时遇到错误。在我更新这些NuGet程序包(从版本2.7.2更新到版本2.8.1)后,现在遇到此异常:
异常系统.IO.文件加载异常:未能加载文件或程序集“DocumentFormat.OpenXml,Version=2.7.2.0,Culture=neutral,PublicKeyToken= 8 fb 06 cb 64 d 019 a17”或它的某一个依赖项。找到的程序集的清单定义与程序集引用不匹配。(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。

thtygnil

thtygnil1#

我刚刚遇到了同样的问题--ClosedXML0.94.0与DocumentFormat.OpenXML2.10.0的兼容性。
在开发机器上运行良好,部署到服务器时找不到正确的程序集。我使用的是.NET 4.7.2
尝试了不同的方法,但没有任何效果,直到我添加了从2.7.2到2.10.0的绑定重定向

bnlyeluc

bnlyeluc2#

这个包有缺陷。我升级到了最近发布的2. 10. 0,所有与清单不匹配相关的问题都消失了。
使用Microsoft最新稳定版DocumentFormat.OpenXml.dll 2.10.0版本的nuget包版本意味着构建输出将仅包含DocumentFormat.OpenXml.dll(正确版本)和运行时所需的唯一文件,而不再包含DocumentFormat.OpenXml.a.b.c.dll -请确保将其删除。
10.0仍然支持旧版本的.NET框架,并通过了所有测试,在我的情况下,您的里程可能会有所不同。

ghhaqwfi

ghhaqwfi3#

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

  • 删除解决方案资源管理器中“references”中的引用
  • 通过Project-〉Add Reference-〉搜索导致错误的引用的名称,选择它,然后添加它。

它像符咒一样为我解决了。

相关问题