C# COM DLL:我使用 Regasm 还是 Regsvr32?

Posted

技术标签:

【中文标题】C# COM DLL:我使用 Regasm 还是 Regsvr32?【英文标题】:C# COM DLL: do I use Regasm, or Regsvr32? 【发布时间】:2010-09-27 04:38:42 【问题描述】:

我正在构建一个 C# ActiveX DLL...我是使用 REGASM 还是 REGSVR32 来注册它?

如何注册 64 位接口和 32 位接口?

【问题讨论】:

【参考方案1】:

您需要使用regasm.exe 注册32 位和64 位接口我相信您需要运行regasm.exe 中的每一个:

C:\Windows\Microsoft.NET\Framework\v2.0.50727

C:\Windows\Microsoft.NET\Framework64\v2.0.50727

所以...在您的情况下,您需要在 Framework64\v2.0.50727 文件夹中运行 regasm.exe

以下是我们用来为我们的旧版 ASP 应用程序之一注册 COM 互操作 DLL 的示例:

regasm.exe Hosting.DeviceManager.Power.dll /register /codebase /tlb

【讨论】:

【参考方案2】:

如果DLL是以“Any CPU”的格式构建的,无论你是否选择regasm

C:\Windows\Microsoft.NET\Framework\v2.0.50727

C:\Windows\Microsoft.NET\Framework64\v2.0.50727

DLL 将被注册为 32 位。

【讨论】:

从我在别处读到的内容,我认为 Framework64\...\regasm 将注册 64 位。

以上是关于C# COM DLL:我使用 Regasm 还是 Regsvr32?的主要内容,如果未能解决你的问题,请参考以下文章

在RegAsm COM dll之后找不到PHP COM文件

regasm 无法定位输入程序集

Regasm 和 Com Interop 误报

使用 PHP 调用 C# .net .dll 脚本

RegAsm.exe 和 regsvr32 有啥区别?如何使用 regsvr32 生成 tlb 文件?

RegAsm.exe 无法通过 installshield 2016 注册 Dll