Загрузка сборок с зависимостями
От: Buzurud  
Дата: 04.08.09 09:17
Оценка:
Здравствуйте. У меня следующая проблема. Во время работы приложения необходимо подгружать плагины, которые в виде DLL-файлов лежат каждый в своей папке.
Я делаю так:
var plugIn = Assembly.Load(File.ReadAllBytes(fileName));

Если у сборки плагина нет никаких зависимостей (кроме mscorlib.dll), то сборка загружается нормально и все работает. Но если у сборки есть зависимости то генерируется исключение.
Невозможно загрузить файл или сборку "BlaBlaBla, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" или один из зависимых от них компонентов. Не удается найти указанный файл.

Зависимости лежат в той же папке что и сама сборка плагина. Эта папка лежит в папке с EXE-шником приложения.
Если зависимости положить в саму папку приложения то плагин запускается.
Как при загрузке сборки указать откуда ей подгружать все зависимости?
Re: Загрузка сборок с зависимостями
От: vbobyr www.bobyrs.info
Дата: 04.08.09 09:23
Оценка: 2 (1)
Попробуй добавить в app.config:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="{Путь к либам}"/>
</assemblyBinding>
</runtime>
Re[2]: Загрузка сборок с зависимостями
От: Buzurud  
Дата: 04.08.09 10:22
Оценка:
Здравствуйте, vbobyr, Вы писали:

V>Попробуй добавить в app.config:

V> <runtime>
V> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
V> <probing privatePath="{Путь к либам}"/>
V> </assemblyBinding>
V> </runtime>

Спасибо! Заработало. Теперь надо разобраться как это в коде зделать чтобы для каждогоплагина подставлять свой путь...
Re: Загрузка сборок с зависимостями
От: samius Япония http://sams-tricks.blogspot.com
Дата: 04.08.09 14:18
Оценка: 2 (1) +1
Здравствуйте, Buzurud, Вы писали:

B>Зависимости лежат в той же папке что и сама сборка плагина. Эта папка лежит в папке с EXE-шником приложения.

B>Если зависимости положить в саму папку приложения то плагин запускается.
B>Как при загрузке сборки указать откуда ей подгружать все зависимости?

Это принципиально грузить сборку из массива байт? Если нет, то используйте метод Assembly.LoadFrom, он ресолвит зависимости. Если да — можно ресолвить самому. Для этого потребуется подписаться на событие AppDomain.AssemblyResolve
Re[2]: Загрузка сборок с зависимостями
От: Buzurud  
Дата: 05.08.09 03:14
Оценка:
Здравствуйте, samius, Вы писали:

S>Это принципиально грузить сборку из массива байт? Если нет, то используйте метод Assembly.LoadFrom, он ресолвит зависимости. Если да — можно ресолвить самому. Для этого потребуется подписаться на событие AppDomain.AssemblyResolve


Спасибо. LoadFrom работает
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.