为什么我必须使用 regasm 注册 COM DLL?

Why do I have to register COM DLLs using regasm?

我用 VB.NET 创建了一个 COM DLL。 它有 COMVisible = true,并且使用它的 TLB 文件,我可以在 VB6 中使用这个 DLL。

在测试机器上,我只能在 VB6 应用程序中使用 regasm.exe 注册后的 COM DLL。

有谁知道为什么我必须使用 regasm 注册它,或者是否有任何方法可以让我不必使用 regasm 注册它?

.NET 不生成 COM dll。它模拟 COM。当您注册 .NET COM DLL 时,它会注册处理和翻译 COM 调用并传递给 .NET DLL 的核心 .NET DLL (MSCORE.DLL)。

如果 regasm 只能在每台机器上安装是上述问题,则从 Regasm 导出为 reg 文件。搜索 HKCR 并将其替换为 HKCU\Software\Classes 然后 regedit /s <path to reg file>。非管理员可以通过合并reg文件来安装。