Нужен совет по ссылке на управляемый COM-сервер (EXE) из клиентского приложения - PullRequest
3 голосов
/ 11 мая 2011

У меня есть управляемый COM вне сервера exe-процесса в c #, выставляющий мою объектную модель приложения для автоматизации, все работает нормально. Я могу получить к нему доступ из неуправляемого кода (например, VC ++), и он запускает мой сервер вне процесса, и каждый работает через COM, используя библиотеку типов, созданную для моего exe-сервера.

Когда я пытаюсь сделать это из управляемого кода, скажем, клиентского приложения C #, я ссылаюсь на свой exe-сервер, но он загружает незавершенный сервер в клиентское приложение.

Как я могу заставить его работать из управляемого кода и запустить сервер вне процесса в своем собственном процессе?

То, что я пытаюсь сделать, это представить объектную модель приложения в COM поверх моего приложения, чтобы ее можно было автоматизировать с помощью неуправляемого кода, а также управляемого кода, аналогично тому, как Microsoft Office. Все работает нормально в неуправляемом коде через COM, но попытка сделать то же самое из управляемого кода только создает экземпляр моего объекта в процессе.

C # Пример:

MyApp.Application app = new MyApp.Application();

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

Ответы [ 2 ]

0 голосов
/ 13 мая 2011

Все, что я могу придумать, это использовать обслуживаемые компоненты, размещенные в COM +. MSDN Link

0 голосов
/ 13 мая 2011

Я нашел ответ в этой статье:

независимо от того, реализация .NET сборки представляет собой Библиотека классов DLL или исполняемый файл, эта сборка всегда загружена в процессе в адресное пространство клиентское приложение. И в в случае сборки EXE она не выполняется, и не будет запущенного экземпляра этого используется для создания экземпляра необходимого .NET класс. ...

Некоторые другие неортодоксальные средства необходимы для того, чтобы имитировать использование сборки .NET EXE в качестве сервера COM вне процесса.

...