2015-07-24 1 views
0

Я пытаюсь создать COM-объект, используя следующий код:Невозможно создать экземпляр COM-класса с помощью Activator.CreateInstance

Type testlib = Type.GetTypeFromProgID("TestComApp.TestApp.TestClass"); 
dynamic comObj = Activator.CreateInstance(testlib); 

Но получаю ошибку:

An unhandled exception of type 'System.Runtime.InteropServices.COMException' occurred in mscorlib.dll

Additional information: Retrieving the COM class factory for component with CLSID {FD909333-3CD0-477F-8A7E-B8045B0B84EC} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154REGDB_E_CLASSNOTREG)).

Я пытался здание проект с платформой AnyPlatform, X86, x64 и используемым RegAsm для 32 и 64 бит.

Но все еще не в состоянии заставить его работать. Я проверил в реестре, а класс и CLSID с GUID существует

enter image description here

+1

Используйте монитор процессов SysInternals. Используйте его при запуске Regasm.exe, вы можете точно определить, какие ключи реестра записываются. И используйте его при запуске своего клиентского приложения, вы можете точно видеть, какие ключи читаются. Несоответствие, которое вы видите, дает вам сильное влияние на основной вопрос. –

+0

ProgId - это всего лишь одна часть регистрации. Что у вас есть в HKCR \ CLSID? – acelent

ответ

0

Начал работу после того, как я использую codebase с Regasm

cd "C:\Windows\Microsoft.NET\Framework\v4.0.30319" 

regasm /codebase C:\DATA\TestComApp\TestComApp\bin\Debug\TestComApp.DLL 

Раньше я делал:

cd "C:\Windows\Microsoft.NET\Framework\v4.0.30319" 

regasm C:\DATA\TestComApp\TestComApp\bin\Debug\TestComApp.DLL 

 Смежные вопросы

  • Нет связанных вопросов^_^