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

时间:2014-04-08 10:14:16

标签: c# dll atl

我使用classlibrary创建了一个DLL,但是通过IDE注册但是无法使用regsvr32注册。

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

2 个答案:

答案 0 :(得分: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列出了原因。{/ p>

答案 1 :(得分:0)

Regasm.exe用于在.NET程序集周围创建COM Callable Wrapper(CCW)。 .NET托管程序集(EXE,DLL)与COM DLL(不受管理,即它们直接与OS交互)不同。因此,要注册非托管DLL,请使用regsvr32.exe。

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