Без регистрации COM-взаимодействия и зависимых сборок - PullRequest
7 голосов
/ 29 октября 2009

Мы работаем над интеграцией большого приложения на основе MFC с несколькими управляемыми (.NET) надстройками. Связь с этими надстройками осуществляется через COM.

Исторически мы просто использовали реестр, чтобы сделать эти надстройки доступными (как COM-серверы) для приложения. Но теперь мы пытаемся использовать COM-взаимодействие без регистрации.

Мы бы хотели, чтобы эти надстройки могли располагаться в отдельном каталоге от каталога, в котором запущено приложение, - в идеале, в любом месте. Но, по-видимому, у нас возникают проблемы с созданием экземпляров объектов сервера из-за невозможности разрешить зависимые сборки, которые также находятся в каталоге с DLL-библиотекой COM-сервера.

«Старомодное» COM-взаимодействие обрабатывает это с помощью контекста LoadFrom при загрузке целевой сборки. Но механизм контекста активации, похоже, не делает этого.

Кто-нибудь знает, как заставить это работать? Не ясно, можем ли мы идентифицировать зависимые сборки в манифесте SxS модуля или, возможно, мы можем создать контекст активации по-другому?

Спасибо за любые мысли / советы!

Джеф

Ответы [ 4 ]

1 голос
/ 22 декабря 2009

Надеюсь, я понимаю проблему, так как я не очень хорошо знаком с проектом MFC и его ограничениями. Как насчет «хорошо известного» класса .NET с интерфейсом (постоянно зарегистрированным в приложении MFC), который, в свою очередь, обрабатывает все активацию и создание экземпляров?

Родня

0 голосов
/ 23 декабря 2009

откройте командную строку visual studio и попробуйте зарегистрировать сборку, используя regasm

regasm /tlb:"path"
0 голосов
/ 23 декабря 2009

Когда я смотрю на статью в Упрощение развертывания приложений с помощью ClickOnce и COM без регистрации. Я отмечаю, что они ссылаются на имя файла DLL библиотеки COM-объектов, свободных от регистрации, в манифесте приложения. Я предполагаю, что это имя файла может быть изменено, чтобы включить каталог или что-то подобное.

Во-вторых, в разделе «Более сложный пример» они включают зависимые COM-объекты в качестве ссылок на свой проект и устанавливают их как изолированные. То есть теперь они также бесплатны при регистрации. Я думаю, что их путь также может быть обновлен.

0 голосов
/ 23 декабря 2009

Зарегистрировали ли вы промежуточные (interop) dll с .net framework?

C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ regasm "путь .. \ AxInterop.xxx.dll" или же C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ regasm "путь .. \ Interop.xxx.dll"

С уважением Фани

...