无法使用 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 工作的主要内容,如果未能解决你的问题,请参考以下文章
无法注册DLL/OCX:regsvr32 failed with exit code 0x5