客户端计算机上的嵌入式Interop REGDB_E_CLASSNOTREG错误

时间:2017-12-06 14:00:29

标签: vb.net visual-studio-2017 interop com-interop

我已将我的应用编译为x86。 我在我的应用程序中使用VB6 COM Interop。 我将引用设置为“Embed Interop type = Yes”,“Isolated = No”。

我不需要在客户端计算机上安装任何东西,甚至不需要“Interop.MyDLL.dll”,它在没有安装任何东西的情况下神奇地工作。

我可以在我的测试计算机上轻松测试,它运行正常。

现在,在我尝试访问DLL时,在客户端计算机上抛出错误“System.TypeInitializationException,class not registered,HRESULT:0x80040154(REGDB_E_CLASSNOTREG)”。

我重新编译应用程序并部署它后发生了。在此之前,它运作良好。

这可能是罪魁祸首?

1 个答案:

答案 0 :(得分:1)

COM没有“魔力”,你必须注册VB6 COM组件(dll,ocx等)。

interop .NET dll不是COM组件,它只包含从.NET到COM的元数据/绑定,因此不需要注册。

PS:事实上,你没有注册,你只需要给客户一个找到你的方法,所以也可以使用Registration-Free Activation of COM Components: A Walkthrough,但它可以比简单注册一堆dll更多的工作。