ASP.NET CORE не смог найти файл или сборку с пользовательской сборкой
У меня возникла странная проблема.
У меня в основном есть собственный веб-стек для .NET-ядра, который я встроил в несколько DLL, и я хочу ссылаться на них из другого решения ASP CORE.
VS, похоже, находит сборки, где я могу перемещаться по типам и т.д.
Я также могу создать проект без каких-либо проблем, но когда IIS запускает сервер, я получаю внутреннюю ошибку сервера:
FileNotFoundException: Не удалось загрузить файл или сборку myDLL, версия = 1.0.0.0, Culture = нейтраль, PublicKeyToken = null '. Система не может найти указанный файл.
Связанные DLL находятся в папке debug, и действительно странно, что если я создаю новый проект ASP Core в том же решении, что и веб-стек, я могу ссылаться и использовать его без каких-либо проблем.
Почему это происходит только при запуске проекта вне решения веб-стека и что я могу сделать, чтобы он мог работать повсюду?
Ответы
Ответ 1
Инструмент .NET Core Tool в VS 2017 (< 15.3 preview)/.NET CLI < 2.0 не полностью поддерживает привязку сборок на диске. Вам необходимо упаковать библиотеку в виде пакета NuGet или использовать ссылку на проект ( "такое же решение" ). Техническая причина заключается в том, что все необходимые сборки и версии разрешаются во время компиляции и записываются в файл .deps.json
. При загрузке произвольных сборок это может завершиться неудачно, потому что либо сборка, либо ее зависимости не могут быть найдены (или конфликты друг с другом).
Ответ 2
для загрузки external dll
в core
проекте необходимо:
- против 2017 года с версией 15.3 или выше.
- В вашем проекте установлен пакет
Microsoft.Extensions.DependencyModel
NuGet.