使用nuGet包ExcelDataReader时,无法加载文件或程序集ICSharpCode.SharpZipLib

本文关键字:文件 加载 程序集 SharpZipLib ICSharpCode nuGet ExcelDataReader 使用 | 更新日期: 2023-09-27 18:27:15

错误:

无法加载文件或程序集"ICSharpCode.SharpZipLib,版本=0.85.5.452,区域性=中性,PublicKeyToken=1b03e6acf116f73"或其依赖项之一。系统找不到指定的文件。`

堆栈:

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

[Asp.Net Mvc3 C#]

使用NuGet Package 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包ExcelDataReader时,无法加载文件或程序集ICSharpCode.SharpZipLib

我遇到了同样的问题;为了解决这个问题,我在他们的codeplex项目中找到了合适的强名称程序集。

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

编辑2021年5月
看起来引用的链接很快就会消失;按照奥列格下面的指示可能是最好的(也更容易)。

如果您得到的是:

无法加载文件或程序集"ICSharpCode.SharpZipLib,版本=0.86.0.518,区域性=中性,PublicKeyToken=1b03e6cf1164f73"或其依赖项之一。系统找不到指定的文件。

然后,解决方案是从SharpZipLib网站下载最新的(或为您的错误选择正确的版本)ICSharpCode.SharpZipLib.dll,并将其放在ExcelDataReader的Excel.dll所在的文件夹中(无需参考)。

因为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>

ICSharpCode.SharpZipLib是强名称程序集。程序集版本号必须完全匹配,否则无法加载。请检查程序集版本。