使用nuGet包ExcelDataReader时出现“无法加载文件或程序集ICSharpCode.SharpZipLib...”错误

17

错误:

无法加载文件或程序集“ICSharpCode.SharpZipLib, Version=0.85.5.452, Culture=neutral, PublicKeyToken=1b03e6acf1164f73”或其某一个依赖项。系统找不到指定的文件。

堆栈:

[FileNotFoundException: 无法加载文件或程序集“ICSharpCode.SharpZipLib, Version=0.85.5.452, Culture=neutral, PublicKeyToken=1b03e6acf1164f73”或其某一个依赖项。系统找不到指定的文件。]
Excel.Core.ZipWorker.Extract(Stream fileStream) +0
Excel.ExcelOpenXmlReader.Initialize(Stream fileStream) +78

[Asp.Net Mvc3 C#]

使用 NuGet 包 ExcelDataReader,我尝试简单地打开保存在文件系统中的 .xlsx 文件。下面是使用的代码:

string filePath = HttpContext.Server.MapPath("~/blank3.xlsx");
FileStream stream = System.IO.File.Open(filePath, FileMode.Open, FileAccess.Read);
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);

这是NuGet包的网站: http://exceldatareader.codeplex.com/

怎么回事?这应该毫无问题。


正如下面的评论所建议的那样,只需使用NuGet安装/重新安装SharpZipLib包即可。这对我很有效。在我看来,其他做法有点hacky。 - Ringo
4个回答

18

我遇到了同样的问题。为了解决这个问题,我在他们的CodePlex项目中找到了适当的Strong-Name程序集。

http://exceldatareader.codeplex.com下载源代码,从他们的LIB目录中获取程序集,并从我的项目中引用它。

2021年5月编辑
看起来引用的链接将很快消失;最好(而且更容易)按照下面Oleg的说明进行操作。


5
请问您能否详细说明一下您的工作流程? - Travis J

5
如果你遇到的问题是:

无法加载文件或程序集“ICSharpCode.SharpZipLib,Version=0.86.0.518,Culture=neutral,PublicKeyToken=1b03e6acf1164f73”或它的某个依赖项。系统找不到指定的文件。

那么解决方案是从SharpZipLib 网站下载最新版本(或选择适合你错误的版本)的ICSharpCode.SharpZipLib.dll,并将其放置在ExcelDataReader的Excel.dll所在的文件夹中(无需引用它)。

哇喔,非常感谢,你刚刚救了我的一天!正是我在寻找的。指南中的确切方法非常完美,解决了我的问题。 - PatsonLeaner

3

由于dll是.net 2.0版本,而您的项目版本较高, 如果您从nuget包管理器安装软件包, 它将自动使用运行时程序集绑定,web.config/app.config文件应该像这样:

  <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1b03e6acf1164f73" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-0.85.4.369" newVersion="0.85.4.369" />
  </dependentAssembly>
</assemblyBinding>


1
简单来说:从NuGet包管理器安装该软件包即可解决我的问题。 - Taylor Brown

1

ICSharpCode.SharpZipLib 是一个 strong name 程序集。程序集版本号必须完全匹配,否则无法加载。请检查程序集版本。


1
我应该在哪里找到程序集?它没有包含在任何软件包或我的web.config文件中。 - Travis J

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接