Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Общие вопросы по .NET и C# > загрузить сборку в не-current AppDomain |
Автор: Bogdan1024 17.3.2009, 13:32 | ||||
Как загрузить .dll в домен не по умолчанию, при чём сборка находится не в папке приложения?
а дальше что? Добавлено через 7 минут и 20 секунд я так понимаю что нужно использовать этот код:
но он опять же загружает сборку в текущий домен а как загрузить в другой? |
Автор: Bogdan1024 17.3.2009, 13:56 |
нужно использовать метод DoCallBack у нового домена, в котором передаётся делегат с кодом, который загружает сборку |
Автор: Partizan 17.3.2009, 13:56 |
Bogdan1024, смотри метод AppDomain.CreateInstanceAndUnwrap при создании объекта сборка автоматически загрузится в домен. |
Автор: Bogdan1024 17.3.2009, 17:03 |
AppDomain.CreateInstanceAndUnwrap не загружает из другой папки так как ему нужно AssemblyName так шо не подходит |
Автор: Bogdan1024 17.3.2009, 18:18 |
вот зло чтобы загрузить сборку нужно указать путь к файлу как дать знать коду из другой другого домена какой именно файл нужно загрузить? интуиция подсказывает что нужно использовать ремоутинг, но как именно его использовать пока не понятно ![]() |
Автор: Voyager 17.3.2009, 18:28 |
Domain.SetData() Domain.GetData() |
Автор: Bogdan1024 17.3.2009, 19:23 | ||||
Заюзал совет Voyager'a. Но что-то по-прежнему не так! лучше проиллюстрирую кодом:
что не так на этот раз? я же её уже загрузил! |
Автор: Partizan 17.3.2009, 19:31 |
Bogdan1024, файлы на которые ссылается ClassLibrary1 должны лежать рядом с ней, либо в GAC |
Автор: Bogdan1024 17.3.2009, 19:33 |
ну, это как бы понятно не понятно почему и как это преодолеть я же загрузил их из другой папки успешно |
Автор: Partizan 17.3.2009, 20:53 | ||||||
Bogdan1024, тип Assembly как бы не помечен атрибутом [Serializable] и как бы между доменами объекты этого типа не передать...
|
Автор: Idsa 19.3.2009, 13:44 |
А почему бы просто не заюзать AppDomain.Load(byte[])? 1. Создаем новый AppDomain 2. Считываем сборку в любой папке в поток байт 3. Вызываем Load(byte[]) |