Здравствуйте, mrozov, Вы писали:
M>Хм...
M>Проблема проявляется только при создании объекта в другом домене?
Оказалось, что нет. Был написан еще тест в котором просто выполняется:
ReferenceClass refer = new ReferenceClass();
refer.Init();
Говорит : Could not load file or assembly 'Reference, Version=1.0.0.0, Culture=neutral, PublicKeyToken=259e45bab0c62d86' or one of its dependencies. Не удается найти указанный файл.
M>Я правильно понимаю — просто ReferenceClass виден и его можно создать, но вы реализуете систему плагинов.
Получается, что не виден.
M>Код в Test4 показывает, что с получением адреса подключаемой dll вы справляетесь успешно, но полученная сборка с точки зрения runtime отличается от той, с которой запущен проект?
Если я правмльно понимаю, то происходит во что:
1) проект выполняет
ComPlusComponentClass c = new ComPlusComponentClass();
2) из директории System32 запускается dllhost, который создает outproc компонент.
3) в статическом конструкторе компонента создается домен, в котором создается объект класса ReferenceClass и возвращается в домен компонента, который не может найти сборку Reference для приведения типа, поэтому приводит объект к MarshalByRefObject.
M>Может, стоит под отладчиком зайти и посмотреть, что там происходит?
Подтверждается вышесказанное: компонент не видит сборку Reference.dll в рантайме.