Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с плагиновой архитектурой приложения 
:(
    Опции темы
mlitkin
Дата 18.9.2008, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 10.7.2007

Репутация: нет
Всего: нет



Возникла проблема при разработке приложения по архитектуре плагинов. Т.е. есть основной exe, к которому в момент запуска динамически из подкаталога (Plugins) подцепляются dll-ки плагинов. И все работает на ура до тех пор, пока плагин состоит только из одной dll. Если же в референсах плагина указать еще какую-либо dll, не указанную в референсах основного приложения, то в момент обращения к классу, объявленному в плагине, возникает ошибка:

"Could not load file or assembly 'EquipmentsDomain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Не удается найти указанный файл."

Сборка EquipmentsDomain - это как раз та dll-ка, которая есть в плагине (в референсах), но ее нет в основном приложении. Лежит она в той же папке, где и плагин (Plugins\Имя плагина). Проблема "решается", если поместить эту dll в каталог вместе с exe. Но это же неправильно - весь плагин должен лежать в своем подкаталоге. Указание подкаталога плагинов на закладке Reference paths в настройках основного приложения также ничего не дает.
При этом если поставить точку останова в dll-ке плагина и проверить список загруженных в домен сборок (AppDomain.CurrentDomain.GetAssemblies()), то там EquipmentsDomain присутствует и именно по нужному пути (подкаталог плагина).

Может кто-то подскажет в чем тут проблема?
PM MAIL   Вверх
PashaPash
Дата 19.9.2008, 02:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: нет
Всего: 49



mlitkin, как именно загружаешь dll плагина? Assembly.LoadFrom? в тот же домен, или в отдельный? Если в отдельный, попробуй указать PrivateBinPath при создании домена. Если в тот же, прицепись к AppDomain.AssemblyResolve и помогай приложению резолвить сборки, или проверь чтобы все сборки загружались в один контекст.


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0718 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.