![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| qaurts |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 15.7.2008 Репутация: нет Всего: нет |
Вопрос такой почему при загрузке Assembly в отдельный AppDomain она также загружается в общий?
Наверное я Ламмер =) Как избежать загрузки в общий AppDomain? Это сообщение отредактировал(а) qaurts - 15.7.2008, 19:37 |
|||
|
||||
| wotker |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 157 Регистрация: 18.7.2006 Где: Ростов-на-Дону Репутация: 1 Всего: 5 |
про Load:
Тоесть она загружает сборку не в domain, а в CurrentDomain. Вот и всё. --------------------
ICQ :: 347306684e-mail :: wotker[at]rambler[dot]ru |
|||
|
||||
| qaurts |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 15.7.2008 Репутация: нет Всего: нет |
Да поковырялся в MSDNe там написано
Короче (если правильно понял) загрузка идет и в этот и в общий Домен. Так как сделать загрузку в отдельный??? |
|||
|
||||
| Pankon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 739 Регистрация: 2.6.2005 Репутация: 3 Всего: 5 |
||||
|
||||
| qaurts |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 15.7.2008 Репутация: нет Всего: нет |
Каким образом? Если можно исходник для наглядности. Если это то что я думаю - то не подходит. Задача в изоляции клиентских Плагинов. Т.Е. у каждого у клиента существует свой AppDomain в котором загружены его плагины. все...
Это сообщение отредактировал(а) qaurts - 15.7.2008, 22:45 |
|||
|
||||
| Pankon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 739 Регистрация: 2.6.2005 Репутация: 3 Всего: 5 |
тут про MarshalByRefObject почитай. Принцип такой: 1. Делаешь прокси класс (наследуешь MarshalByRefObject), в котором в конструкторе (или в методе) грузишь свои assembly в "текущий" домен. 2. Создаешь новый домен AppDomain ad = AppDomain.CreateDomain("New domain"); 3. В новом домене создаешь экземпляр прокси класса (см п.1) ad.CreateInstanceAndUnwrap(...) 4. Вызываешь свой метод для загрузки assembly(если в конструкторе не загрузил) Вообщем так получатся, экземпляр класса будет "жить" в новом домене и для него новый домен будет "current". Через MarshalByRefObject "дергаешь как за ниточки" методы этого экземпляра из главного домена. (Вот так популярно объяснил.) Добавлено через 13 минут и 22 секунды Подходит. Делай у плагинов Main класс, который реализует твой Interface(и наследует MarshalByRefObject). В 3 - м шаге создавай экземпляр из твоей assembly-plagin на Main(Main класс будет прокси). Присваивай экземпряр твоему интерфейсу. Так ты сможешь "дергать одинаковые методы" во всех плагинах. Не забудь указать ApplicationBase для каждого домена, где у тебя assemblies данного плагина лежат(см. класс AppDomainSetup). |
|||
|
||||
| qaurts |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 15.7.2008 Репутация: нет Всего: нет |
Спасибо! Почти работает .. Есть только одно ApplicationBase, после создания домена не присваивается, если присвоить при инициализации то 1) CreateInstanceAndUnwrap [см *] вызывает исключение (не удается найти exe - сборку). 2) В противном случае выдается исключение при попытке получить все сборки [см **] выдается исключение что не может загрузить dll - сборку. Как быть?
Вот мой код
Это сообщение отредактировал(а) qaurts - 16.7.2008, 11:18 |
|||
|
||||
| ДобренькийПапаша |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1278 Регистрация: 14.1.2006 Где: г.Москва Репутация: нет Всего: 7 |
конфигурационный файл есть (его надо создать), он имеет такое же имя как и сборка + расширение конфиг там прописать конкретно можно откуда что брать, попробуй, может поможет...
Это сообщение отредактировал(а) ДобренькийПапаша - 25.7.2008, 17:23 -------------------- Меня зовут Себастьян Парейра, торговец чёрным деревом. |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |