注册/加载64位.NET DLL的问题

时间:2013-04-11 17:27:06

标签: com 64-bit activex

我有一个VB客户端应用程序,它调用VB进程内COM服务器myprogressbar

(是的,这是VB调用VB的一种不正常的方式,但客户端是测试工具 - 在生产代码中,客户端不是VB,需要使用COM)。

Dim progressbar As Object = CreateObject("myprogressbar.myprogressbar")
progressbar.showform()

此操作失败并显示错误

System.Exception: cannot create ActiveX component

x86服务器已成功注册

c:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe x86\Release\myprogressbar.dll

x64服​​务器已成功注册

c:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe x64\Release\myprogressbar.dll

更新:编译为Any CPU的单个服务器也会发生同样的事情。之前的x86版本工作报告仅限于之前仍在注册的安装。

1 个答案:

答案 0 :(得分:0)

解决了这个问题。

问题是.NET程序集除非加载到GAC中,否则需要使用/c切换到regasm(注册代码库的完整路径),因此可执行文件可以找到它们在运行时。这与默认情况下具有此类行为的regsvr32形成对比。