【问题标题】:Could not load file or assembly 'DocumentFormat.OpenXml - Again无法加载文件或程序集'DocumentFormat.OpenXml - 再次
【发布时间】:2018-05-08 16:40:06
【问题描述】:

似乎这个问题是一个非常流行的问题,我已经阅读了近十几个类似的问题,但都提供了相同的解决方案(安装并参考 DocumentFormat.OpenXml 2.5),我已经这样做了,而且是还是不行。

我正在使用 Visual Studio 2012,在我的项目中引用 ClosedXML 版本 0.93 和它的依赖项 DocumentFormat.OpenXML 版本 2.5。这两个 .dll 文件都存储在我项目的 .exe 文件旁边。 Visual Studio 似乎看到了这些引用:

在我的代码顶部,我还有:

Imports DocumentFormat.OpenXml
Imports ClosedXML

但是,当我调用一个简单的测试代码时,

Dim workbook = New ClosedXML.Excel.XLWorkbook()
Dim worksheet = workbook.Worksheets.Add("Sample Sheet")
worksheet.Cell("A1").Value = "Hello World!"
workbook.SaveAs("HelloWorld.xlsx")

我得到一个错误,说:

发生“System.IO.FileLoadException”类型的未处理异常 在 System.Windows.Forms.dll 中

附加信息:无法加载文件或程序集 'DocumentFormat.OpenXml,版本=2.7.2.0,文化=中性, PublicKeyToken=8fb06cb64d019a17' 或其依赖项之一。这 定位程序集的清单定义与程序集不匹配 参考。 (HRESULT 异常:0x80131040)

我不知道为什么会发生此错误。如果我写 DocumentFormat.OpenXml。在我的代码中,我得到了该库中建议函数的列表,因此必须正确加载引用。

有人可以帮忙吗?

【问题讨论】:

  • 您能否编辑您的问题以描述您尝试但未奏效的解决方案?这样可以避免有人浪费时间再次发布相同的解决方案。
  • 我的最后一段是关于那个解决方案的。我将编辑问题以使其更清楚。
  • 对不起。我错过了,我的错误。
  • 使用 NuGet 管理您的库。它会解决这样的问题。

标签: vb.net closedxml


【解决方案1】:

您是否注意到在屏幕截图中您在 OpenXml 程序集的引用中使用了 2.5 版,但异常消息引用了较新的 2.7.2?那可能是你的问题。可能是您引用了 2.5,但“ClosedXML”预期的是 2.7.2,而当它找不到时会抛出错误?

我会得到 2.7.2,更新您的参考,然后看看是否可行。

【讨论】:

  • (+1) 是的,就是这样,版本冲突,加载的程序集与声明的程序集之间的不兼容问题。
  • 正确。 ClosedXML 0.93 需要 OpenXML 2.7.2 或更高版本。使用 NuGet 应该可以解决这些问题。
【解决方案2】:

你必须去掘金并将文档 xml 引用更新为最新的 2.7 并且问题已修复

【讨论】:

    猜你喜欢
    • 2014-10-08
    • 2016-12-23
    • 2014-12-01
    • 2020-08-17
    相关资源
    最近更新 更多