COM .NET DLL未在GAC中注册(REGDB_E_CLASSNOTREG)

时间:2016-04-06 06:17:48

标签: c# .net com ole gac

我在一台机器上构建了一个.net COM dll(debug x64)。我有所有设置和工作(我可以在C:\ Windows \ Micorosft.NET \ assembly和OLEVIEWER中看到它)。

我将dll带到了另一台机器(以及从MIDL生成的.h和.c文件)。我按照以下步骤http://codeingaddiction.blogspot.com/2011/06/how-to-add-strong-name-to-existing-dll_16.html将dll注册到GAC中 - 创建密钥对,生成MISL,使用密钥从MISL重建程序集,然后将其添加到GAC。它似乎在GAC中,我可以尝试使用gacutil / l MyDllName来搜索它。但是,在我的客户端应用程序中,当我链接它时,在运行时调用CoCreateInstance时,我得到REGDB_E_CLASSNOTREG(HRESULT)。我在C:\ Windows \ Microsoft.NET /Assembly和OLEVIEW中都看不到dll。

我错过了任何步骤,或做错了什么?

由于

1 个答案:

答案 0 :(得分:2)

您收到错误REGDB_E_CLASSNOTREG的原因是因为您的.net COM DLL未注册。需要注册任何.net程序集,以便将其作为com类公开给客户端。我们需要使用regasm.exe来注册.net程序集。