我使用classlibrary创建了一个DLL,但是通过IDE注册但是无法使用regsvr32注册。
答案 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。