无法使用 regsvr32 注册我的 DLL,但可以通过 IDE 工作

Posted

技术标签:

【中文标题】无法使用 regsvr32 注册我的 DLL,但可以通过 IDE 工作【英文标题】:Unable to register my DLL using regsvr32, but via IDE works 【发布时间】:2014-05-20 23:13:09 【问题描述】:

我使用类库创建了一个 DLL,但正在通过 IDE 注册,但无法使用 regsvr32 注册。

参考How do I create an ActiveX control (COM) in C#?

【问题讨论】:

【参考方案1】:

.NET 程序集不是本机 DLL。您只能在支持 self-registration 的本机 DLL 上使用 regsvr32

要注册 .NET 程序集,您可以改用 regasm。您可以在此路径或类似路径中找到它:

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe"

但是,在安装程序中注册 COM 服务器的推荐方法是安装所需的注册表项,而不是使用 regsvr32 或 regasm。 Windows Installer documentation about the SelfReg table 列出了一些原因。

【讨论】:

【参考方案2】:

Regasm.exe 用于围绕 .NET 程序集创建 COM Callable Wrapper (CCW)。 .NET 托管程序集(EXE、DLL)与 COM DLL(非托管,即它们直接与操作系统交互)不同。因此,要注册非托管 DLL,请使用 regsvr32.exe。

但是,如果您有一个托管的 .NET 程序集并希望 COM 组件像使用 COM 程序集一样使用它,那么您需要使用 regasm.exe。

【讨论】:

以上是关于无法使用 regsvr32 注册我的 DLL,但可以通过 IDE 工作的主要内容,如果未能解决你的问题,请参考以下文章

regsvr32 vbscript.dll不能加载怎么办

无法注册DLL/OCX:regsvr32 failed with exit code 0x5

如何创建可以注册到 regsvr32 的库?

如何使用 Regsvr32 注册 .NET COM DLL?

RegSvr32 没有为 COM 对象创建注册表项

RegSvr32.exe 无法启动