从控制台应用程序无法创建COM对象,而Windows窗体应用程序可以。

3

我试图从 .Net Framework 4.0 控制台应用程序和 Windows 窗体应用程序中创建相同的 COM 对象实例。

 var t = Type.GetTypeFromProgID("MyProgID");
 dynamic req = Activator.CreateInstance(t);

当我运行控制台应用程序时,它告诉我:

System.Runtime.InteropServices.COMException (0x80040154): Retrieving the COM cla
ss factory for component with CLSID {CF2D8AF3-287C-4107-8790-D37F169E2475} faile
d due to the following error: 80040154 Class not registered (Exception from
HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

Windows窗体应用程序可以在没有异常的情况下创建实例。

这里可能出了什么问题?

在这两种情况下,我都将[STAThread]属性应用于“Program”类。


你正在尝试创建哪个COM对象? - bobbyalex
那是我的自己的组件对象实例。谢谢,@Bobby,我已经找到了问题。 - Andrew Florko
1个回答

1

我找到了问题。

COM对象仅在x86环境中运行。 我的Windows窗体应用程序仅构建为x86,而我的控制台是“任何CPU”,这会在x64环境下导致错误。

在我更改了控制台应用程序的平台目标后,一切都正常了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接