Вызовите COleDispatchDriver :: CreateDispatch с определенной версией DLL - PullRequest
0 голосов
/ 20 декабря 2011

У меня есть несколько проектов на MFC6 и один проект, написанный на DotNet 4. Связь между проектами MFC и проектом .Net осуществляется через COM, а COM-сервер находится на стороне .Net. COM-сервер зарегистрирован через RagAsm.exe. В MFC я создаю экземпляр этого COM-сервера следующим образом:

CreateDispatch( _T("PROGID.namespace") )

Проблема в том, что COM-сервер используется разными проектами. Поэтому, если я хочу увеличить номер версии моего dll com-сервера из-за изменений кода, мне пришлось снова зарегистрировать его в RegAsm. Теперь в моем реестре есть две версии этой библиотеки. Но когда я вызываю метод CreateDispatch, программа каждый раз пытается загрузить самый новый. Это означает, что проекты, которые включают более старые версии, не смогут найти правильную DLL. Кажется, невозможно указать версию при вызове CreateDispatch ().

Есть ли еще возможность решить эту проблему?

1 Ответ

0 голосов
/ 20 декабря 2011

ProgID преобразуется в CLSID и затем в конечном итоге в двоичный файл COM-сервера. Если вы хотите, чтобы в системе присутствовали два разных COM-сервера, почему бы вам не использовать «зависимый от версии» (в отличие от независимой от версии, которую вы использовали в приведенном выше фрагменте кода) ProgID с разными версиями.

...