Backgroud:
Я нахожусь в процессе миграции консольного приложения, чтобы стать частью нашего существующего проекта веб-API. Вся работа по разработке выполняется на Visual Studiod 2015 (с IIS Express). Приложение использует несколько сторонних API-интерфейсов API источника данных для получения данных из этого источника данных. Все эти библиотеки управляются нашими внутренними источниками пакетов nuget.
Проблема:
Теперь консольное приложение работает нормально и может загрузить эти библиотеки DLL. Я скопировал логику в свой веб-проект и добавил библиотеки DLL через Nuget. Решение собирается, но при запуске веб-проекта появляется следующая ошибка:
Could not load file or assembly 'ABC.DLL' or one of its dependencies. The specified module could not be found.
Где ABC.DLL - одна из сторонних DLL.
Я сделал следующее:
- Подтвердите, что ABC.DLL находится в папке bin моего веб-проекта
- Изменена целевая платформа сборки моего веб-проекта на x86 и снята отметка «Использовать 64-битную версию IIS Express для веб-сайтов и проектов» в VS2015 (сторонняя dll - 32-битная)
- Запустил dumpbin.exe на зависимости ABC.DLL и получил XYZ.dll , MSVCR120.dll, KERNEL32.dll, MSVCP120.dll, mscoree.dll
Что касается последнего шага, то все dll отсутствовали в папке bin (но последние 4 DLL должны быть в каталоге win32 system32, поэтому это не должно иметь значения?)
Что касается XYZ.dll, это еще одна сторонняя библиотека, которая находится в папке C: \ Program Files (x86) \ XYZ \. Я вручную скопировал его в папку bin веб-проекта (фактически скопировал все Dlls в папке XYZ) и все еще получаю ту же проблему.
Вопросы
- Что мне здесь не хватает? Консольное приложение, очевидно, может загружать ABC.DLL, но веб-проект не может. Цените это, если вы можете сказать мне, что проверить дальше.
- Сообщение об ошибке при запуске веб-страницы не очень полезно, есть ли способ узнать, где веб-проект пытается загрузить сторонние библиотеки DLL?
Заранее спасибо!