ADODB 2.7 COM 参考不再在 VS2012 中注册

Jak*_*uzL 4 vb.net com reference adodb

  • 视觉工作室2012
  • VB网络
  • .NET 4.0
  • 构建机器 x64
  • 构建配置 AnyCPU
  • msado27.tlb

这个项目并不新鲜,在过去的两年里已经建造了数百次。在过去 3 周内,情况发生了变化,无法再注册对 Microsoft ActiveX 数据对象 2.7 库的 COM 引用。当我尝试从可用的 COM 条目中重新选择它时,它是可见且可选择的。

com 参考列表

选择后可以看到黄色三角形

带黄色三角形的参考树节点

然后通过其属性查看它,您可以看到没有显示路径。

参考属性

通过项目属性查看时 -> 引用它显示

项目属性参考

如果我选择较新的版本,例如 2.8、6.0 或 6.1,它们将注册。但是,如果我选择较旧的 2.5,它的作用是相同的。

关于可能发生的情况或如何验证 GAC 或主互操作程序集中的 .dll 是否确实具有版本 2.7 的定义和/或实现,有任何建议或理论吗?

顺便说一句,我确实意识到这是一个非常旧的版本,但是当前的 .Net 项目有额外的 COM 引用/依赖项依赖于这个特定版本,我目前无法切换到较新的版本。

Jak*_*uzL 7

经过痛苦的一天和浪费了很多时间后,我决定使用 regasm 再次重新注册类型,我认为这确实没有机会解决问题。低,看这就是问题所在。

对我来说修复...

  1. 以管理员身份打开VS2012的开发者控制台
  2. 导航到 adodb.dll 的 GAC 区域 @ %windir%/ assembly/gac/adodb/7.0.3300.0__b03f5f7f11d50a3a
  3. 然后运行命令“regasm adodb.dll”,您应该收到“类型注册成功”消息
  4. 返回 VS2012 和所有当前引用

注意:早期,在检查 adodb.dll 文件中找到的类型库的注册表值时,我注意到无法在 VS 中注册的版本(2.7、2.6 和 2.5)没有这些键的主互操作程序集值,如下所示新版本做到了。运行 regasm 后,这些值已添加到旧版本中。

运行 regasm 后显示 v2.7 的主要互操作程序集信息