Вот как мои папки приложения выглядит следующим образом:Правильный способ разрешения сборок из подпапок
Application:
+ App.exe
+ App.exe.config
Application/Plugins:
+ Plugin1 (folder)
Application/Plugins/Plugin1:
+ Plugin1.dll
+ SomeDll.dll
Так главное приложение App.exe ищет папку плагинов и загрузки {PluginName} .dll в памяти, чтобы запустить его. Этот плагин обычно использует собственные зависимые сборки, которые должны быть загружены (например, SomeDll.dll). Похоже, что иногда возникают серьезные проблемы. Я получаю исключение, потому что, например, зависимая сборка зависимой сборки не может быть найдена, и я не знаю, почему.
Например, Мой плагин должен загружать много дополнительных библиотек dll, потому что плагин запускает службу OwinSelfHost.
Так он должен загрузить, например:
System.Web.Http.Owin
Owin
Microsoft.Owin
Microsoft.Owin.Host.HttpListener
Microsoft.Owin.Hosting
и когда нагрузка Microsoft.Owin.Hosting затем бросить исключение, которое не может загрузить Microsoft.Owin
Исключение выглядит следующим образом:
Could not load file or assembly 'Microsoft.Owin, Version=2.0.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of it's dependencies. File not found.
Почему вы не ставите все DLL-файлы в одну папку при создании приложения? –
Поймать его будет много беспорядка. Я стараюсь держать его в чистоте – Puchacz
@IlyaKogan, имеющий всю DLL в местоположении, найденном по умолчанию (aka [пробный путь] (https://msdn.microsoft.com/en-us/library/823z9h8w.aspx?f=255&MSPPError=-2147217396)) значительно менее интересен, чем ударить все конфликты нагрузки во время выполнения. Я полностью понимаю, почему OP хочет держать его интересным и очищать беспорядок, когда они шеи глубоко в нем :) –