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

问题描述 投票:0回答:1
  • Visual Studio 2012
  • VB.net
  • .NET 4.0
  • Build Machine x64
  • 构建配置AnyCPU
  • msado27.tlb

这个项目并不新鲜,在过去的两年里已经建成了100多次。在过去3周内,某些内容发生了变化,并且无法再注册对Microsoft ActiveX Data Objects 2.7库的COM引用。当我尝试从可用的COM条目中重新选择它时,它是可见的和可选择的。

Com reference list

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

reference tree node with yellow triangle

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

reference properties

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

project properties references

如果我选择较新的版本,如2.8,6.0或6.1,他们将注册。但是,如果我选择较旧的2.5,它的行为方式相同。

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

顺便说一句,我确实知道这是一个非常古老的版本,但是这个当前的.Net项目有额外的COM引用/依赖,这依赖于这个特定的版本,我现在无法切换到更新的版本。

vb.net reference com adodb
1个回答
1
投票

经过痛苦的一天和浪费了很多时间之后,我决定再次使用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)中未注册的版本没有主键的Interop组装值。较新版本的确如此。运行regasm后,为旧版本添加了这些值。

Shows primary interop assembly info for v2.7 after running regasm

© www.soinside.com 2019 - 2024. All rights reserved.