Vb.net 客户端计算机上的嵌入式互操作REGDB_E_CLASSNOTREG错误
我已将我的应用程序编译为x86。 我正在我的应用程序中使用VB6 COM互操作。 我已经将引用设置为“嵌入互操作类型=是”,“隔离类型=否” 我不需要在客户机上安装任何东西,甚至“Interop.MyDLL.dll”也不需要安装任何东西,它神奇地工作了 我可以在我的测试计算机上轻松地测试这个,它工作得很好 现在,在客户端计算机上,当我尝试访问DLL时,会抛出错误“System.TypeInitializationException,class not registered,HRESULT:0x80040154(REGDB_E_CLASSNOTREG)” 它发生在我重新编译并部署应用程序之后。在那之前,它工作得很好 罪魁祸首可能是什么?COM没有“魔力”,您必须注册VB6 COM组件(dll、ocx等) interop.NET dll不是COM组件,它只包含从.NET到COM的元数据/绑定,因此不需要注册Vb.net 客户端计算机上的嵌入式互操作REGDB_E_CLASSNOTREG错误,vb.net,visual-studio-2017,interop,com-interop,Vb.net,Visual Studio 2017,Interop,Com Interop,我已将我的应用程序编译为x86。 我正在我的应用程序中使用VB6 COM互操作。 我已经将引用设置为“嵌入互操作类型=是”,“隔离类型=否” 我不需要在客户机上安装任何东西,甚至“Interop.MyDLL.dll”也不需要安装任何东西,它神奇地工作了 我可以在我的测试计算机上轻松地测试这个,它工作得很好 现在,在客户端计算机上,当我尝试访问DLL时,会抛出错误“System.TypeInitializationException,class not registered,HRESULT:0x8
PS:事实上,你不需要注册,你只需要给客户端一个找到你的方法,所以也可以使用,但这比简单地注册一堆dll要复杂。你不需要注册互操作dll(它不是COM组件,只是元数据定义)。但必须注册VB6 COM组件(dll、ocx等)。没有魔法。@SimonMourier天哪,你说得对。问题是,几年前我在测试机上将它安装到SysWow64上,所以我没有注意到我需要它。非常感谢你!也许你可以把你的评论作为回答。然后其他像我这样的傻瓜也能找到答案。