无法使用Activator.CreateInstance

时间:2015-07-24 08:30:23

标签: c# .net com regasm

我正在尝试使用以下代码创建com对象:

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

但得到错误:

  

mscorlib.dll中出现未处理的“System.Runtime.InteropServices.COMException”类型异常

     

附加信息:由于以下错误,检索具有CLSID {FD909333-3CD0-477F-8A7E-B8045B0B84EC}的组件的COM类工厂失败:80040154未注册类(HRESULT异常:0x80040154REGDB_E_CLASSNOTREG)。

我尝试使用AnyPlatform,X86,x64位平台和用于32位和64位的RegAsm构建项目。

但仍然无法让它发挥作用。我已经在注册表中验证了类和带有GUID的CLSID

enter image description here

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

在生产模式(在IIS中)的WCF项目中,我遇到了同样的问题。 在开发模式(Visual Studio)中,不会发生此错误。

对我来说,解决方案是在IIS->应用程序池->高级设置->启用32位应用程序中: enter image description here