Не удалось загрузить файл или сборку ICSharpCode.SharpZipLib... При использовании пакета nuGet ExcelDataReader
Ошибка:
Не удалось загрузить файл или сборку "ICSharpCode.SharpZipLib, Version = 0.85.5.452, Culture = neutral, PublicKeyToken = 1b03e6acf1164f73" или одну из его зависимостей. Система не может найти указанный файл. `
Stack
[FileNotFoundException: не удалось загрузить файл или сборку ICSharpCode.SharpZipLib, Version = 0.85.5.452, Culture = neutral, PublicKeyToken = 1b03e6acf1164f73 'или одну из его зависимостей. Система не может найти указанный файл.]
Excel.Core.ZipWorker.Extract(поток fileStream) +0
Excel.ExcelOpenXmlReader.Initialize(поток fileStream) +78
[Asp.Net Mvc3 С#]
Используя пакет 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/
Что дает? Это должно работать без сбоев.
Ответы
Ответ 1
Я столкнулся с той же проблемой; чтобы решить проблему, я нашел соответствующую сборку сильного имени в своем проекте codeplex.
Загрузил исходный код http://exceldatareader.codeplex.com, схватил сборку из своего каталога LIB и ссылался на нее из моего проекта.
Ответ 2
Если вы получаете:
Не удалось загрузить файл или сборку "ICSharpCode.SharpZipLib, Version = 0.86.0.518, Culture = neutral, PublicKeyToken = 1b03e6acf1164f73" или одну из его зависимостей. Система не может найти указанный файл.
Тогда решение должно загрузить latest (или выбрать правильный версия для вашей ошибки) ICSharpCode.SharpZipLib.dll
с сайта SharpZipLib и просто поместите его в папку, где ExcelDataReader Excel.dll
находится (нет необходимости ссылаться на него).
Ответ 3
ICSharpCode.SharpZipLib - это сильная сборка имен. Номер версии сборки должен точно совпадать или иначе он не загружается. Проверьте версию сборки.
Ответ 4
потому что 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>