Здравствуйте, AThe, Вы писали:
AT>Есть Com+ компонент, написанный на C#. В его проект добавлены refы на другие библиотеки. AT>Тесты (создается тестовый проект, создающий объект): AT>1) Объект не является COM+ компонентом — все работает на ура. AT>2) Объект является COM+ компонентом — регистрируется в папке Debug тестового проекта. Вызов AppDomain.CreateInstance(MyAsmStr,MyTypeStr) возвращает не то, что в первом тесте. А именно, объект MarshalByRefObject не может быть приведен к типу MyType. При создании всех AppDomain — ApplicationBase == DebugFolder тестового проекта. AT>3) Зарегистрированный компонент запускается при помощи Службы компонентов — вообще не может найти не один ref, т.к. запускается из %System%.
AT>Вопросы: AT>1) почему поведение AppDomain.CreateInstaince различно в первом и втором случае? AT>2) как разрешить зависимости в третьем случае без помещения сборок в ГАК?
Давненько я этим не занимался, отвечаю по памяти.
1. У тебя в данном случае (по меньшей мере, если речь идет о com-приложении, а не библиотеке) и должен быть MarshalByRefObject. Приводиться он должен к интерфейсу (ты ведь определил интерфейс и назначил ему Guid, правда?).
2. В настройках COM+ приложения есть рабочая папка, которую можно задать.