Com 注册/加载64位.NET dll时出现问题

Com 注册/加载64位.NET dll时出现问题,com,64-bit,activex,Com,64 Bit,Activex,我有一个VB客户端应用程序,它调用VB进程内COM服务器myprogressbar (是的,这是VB调用VB的一种反常方式,但客户端是一个测试工具-在生产代码中,客户端不是VB,需要使用COM) 此操作失败并出现错误 System.Exception:无法创建ActiveX组件 x86服务器已(成功)注册到 并且x64服务器已(成功)注册到 更新:编译为任何CPU的单个服务器也会发生同样的情况。以前关于x86版本运行的任何报告都只涉及到仍在注册的以前的安装。解决了这个问题 问题是.NET程序集,

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

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

此操作失败并出现错误

System.Exception:无法创建ActiveX组件

x86服务器已(成功)注册到

并且x64服务器已(成功)注册到

更新:编译为
任何CPU的单个服务器也会发生同样的情况。以前关于x86版本运行的任何报告都只涉及到仍在注册的以前的安装。

解决了这个问题

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

Dim progressbar As Object = CreateObject("myprogressbar.myprogressbar")
progressbar.showform()
c:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe x86\Release\myprogressbar.dll
c:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe x64\Release\myprogressbar.dll