VB.NET项目升级Interop.ADODB到6.0版本报错及相关疑问
Interop.ADODB与ADODB的区别
首先明确你在对象浏览器看到的两个条目差异:
- ADODB:是原生COM组件,最初为VB6、ASP等非.NET平台设计,无法直接被.NET框架调用
- Interop.ADODB:是.NET互操作封装程序集,作用是把ADODB的COM接口转换为.NET可识别的类型,你报错中提到的
ADODB.ConnectModeEnum枚举就定义在这个程序集中
引用冲突解决操作步骤
第一步:清理所有旧版本引用
- 右键你的VB.NET项目,选择「属性」,切换到「引用」标签页
- 在引用列表中找到所有版本的
Interop.ADODB条目,全部选中后点击「移除」 - 关闭属性页,点击顶部菜单栏「生成」->「清理解决方案」,清除所有历史编译缓存
第二步:添加6.0版本互操作程序集
- 右键项目,选择「添加」->「引用」
- 在弹出的引用管理器窗口中切换到「COM」标签,找到
Microsoft ActiveX Data Objects 6.0 Library,勾选后点击确认 - 此时VS会自动生成对应6.0版本的
Interop.ADODB程序集,不会出现版本冲突
第三步:处理残留二义性问题
如果执行完上述步骤还有报错,手动修改项目文件清除残留配置:
- 右键项目选择「卸载项目」,再右键选择「编辑*.vbproj」
- 全局搜索
Interop.ADODB相关的<Reference>节点,删除所有版本号非6.0.0.0的节点 - 保存文件后右键项目选择「重新加载项目」,再执行「重新生成解决方案」即可
提示:不要手动拷贝第三方的
Interop.ADODB.dll到项目目录,通过COM标签添加引用的方式会自动匹配系统注册的ADODB组件版本,避免出现公钥标识不匹配的问题
内容的提问来源于stack exchange,提问作者Dean Scot
相关产品推荐
相关产品推荐

