Я разработал пример c # COM-Visible DLL.
Встроенный в x86 и зарегистрированный через 32-разрядный Regasm, он хорошо работает на COM-клиенте.
Встроенный в x64 и зарегистрированный через 64-разрядный Regasm,При вызове COM-клиента сбрасывается следующая ошибка:
Retrieving the COM class factory for component with CLSID {A0F2F58F-7B98-3605-BEC9-84724FF1E824} failed due to the following error: 80040154.
Я проверил и убедился, что CLSID действительно присутствует в реестре в разделе HKCR \ CLSID.
Ниже приведен пример имитации COM-доступачерез c #:
var type = Type.GetTypeFromProgID("ProgID.Interop.5683");
var obj = Activator.CreateInstance(type); // <-- blows here
Я также проверил через procmon, что есть успешный доступ к типу через progId. Вопрос в том, где именно выглядит Активатор?и как заставить его "видеть" мою зарегистрированную сборку x64?мне нужно что-то добавить?
Я нашел много «решений», рекомендующих перестройку x86.Но приходи!Я не собираюсь этого делать и потеряю все преимущества x64 только ради COM.Есть ли РЕАЛЬНОЕ решение для этого?