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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема при загрузке dll-ки в новый AppDomain 
V
    Опции темы
Compositum
Дата 21.6.2011, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Senior developer
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 430
Регистрация: 6.1.2008
Где: Санкт-Петербург

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



Пишу код (плагин, работающий в AutoCAD), в котором хочу создать отдельный AppDomain и загрузить в него некоторую dll-ку:
Код

        static AppDomain dom;
        static Editor ed = acad.DocumentManager.MdiActiveDocument.Editor;

        [CommandMethod("bush", "dload", CommandFlags.Session)]
        public void MyNetload()
        {            
            if (dom != null)
            {
                ed.WriteMessage("Домен уже существует.\n");
                return;
            }
            AppDomain curDomain = Thread.GetDomain();
            DomAsmsPrint(curDomain);
            AppDomainSetup aps = new AppDomainSetup();            
            StringBuilder sb = new StringBuilder();
            sb.Append(curDomain.BaseDirectory);
            sb.Append(";");
            sb.Append(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));
            aps.PrivateBinPath = sb.ToString();            
            
            dom = AppDomain.CreateDomain("D #2", null, aps);
            string dbd = dom.BaseDirectory;//В отладчике смотрю значение
            string x = dom.SetupInformation.PrivateBinPath;//В отладчике смотрю значение
            ed.WriteMessage(string.Format("Создан новый домен с именем \"{0}\"\n", dom.FriendlyName));
            DomAsmsPrint(dom);
            try
            {                
                ///В этой строке получаю исключение: 
                ///"Could not load file or assembly 'DomainUseSample, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its 
                ///dependencies. Не удается найти указанный файл."
                ///
                ///DomainUseSample - это сборка, в которой выполняется код основного домена.
                ///Для загрузки сборки использую DoCallBack в надежде, что сборка будет загружена только в домен dom...
                dom.DoCallBack(() => Assembly.LoadFrom(@"D:\MD\Visual Studio 2010\CmdSample\CmdSample\bin\Debug\CmdSample.dll"));                
            }
            catch (System.Exception ex)
            {
                ed.WriteMessage(string.Format("Возникло исключение: \"{0}\"\n", ex.Message));
                return;
            }
            ed.WriteMessage(string.Format("##################\nТеперь снова проверяю содержимое обоих доменов...\n##################\n",
                    dom.FriendlyName));
            DomAsmsPrint(curDomain);
            DomAsmsPrint(dom);

            ed.WriteMessage("Загрузка выполнена успешно.\n");
        }


В комментариях показал место, в котором возникает исключение и текст самого исключения...
Вопросы:
1. Почему в новый домен происходит загрузка кода текущей сборки (я этого не заказывал) и можно ли этого избежать?
2. Почему новый домен не может найти текущую (основную) сборку и загрузить её? Я ведь указал каталоги поиска через AppDomainSetup.PrivateBinPath...
PM   Вверх
Compositum
Дата 22.6.2011, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Senior developer
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 430
Регистрация: 6.1.2008
Где: Санкт-Петербург

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



Тема закрыта. Ключ к решению проблемы с нахождением dll-файлов - обработка события AssemblyResolve.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

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

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


 




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


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

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