我有一个遗留的VB.NET应用程序,最初是用MSVS2010(或可能更早版本)编写的。它包含对Microsoft ActiveX Data Objects 2.8库的COM引用,即ADODB.dll,位于FooProject\obj\x86\Debug\Interop.ADODB.dll
。
我一直在使用MSVS2017在我的Windows 10 PC上开发这个应用程序,但是最近当我尝试在其使用的Windows 7机器上运行时,我得到ADODB引用的错误,包装器组件丢失了
我已经检查过目标平台设置为x86(Win 7机器是32位,我的开发机器是64位)。但错误仍然存在。回顾一下提交,我可以找到引入问题的地方。在对MSSQL DB表(添加列)进行一些更改以及后续更新LINQ-to-SQL DBML文件期间,vbproj文件中ADODB引用的包装器设置似乎已从tlbimp更改为primary。
虽然它没有在提交历史记录中显示,但引用的路径也会更改为C:\WINDOWS\assembly\GAC\ADODB\7.0.33.00.0_b03f5f7f11d50a3a\ADODB.dll
现在我想我可以改回路径,但由于这与自动生成的代码(DBML和VBPROJ)有关,我不确定obj
中的dll是否应该总是在那里,如果这是正确的方式来引用它?我认为要确定正确的行动方案,这将有助于理解为什么发生了这种变化......谁能告诉我?
此可能与this question有关,但我不确定。
更新
在Windows 7机器上进行了一些调整之后,我将引用更改为其他版本(2.8 - > 6.0)然后再返回...现在引用路径返回到obj
并且项目构建。但是,这在我的Windows 10计算机上不可以正常工作,我需要将其匹配,以便我不会经常尝试在不同的引用之间来回切换。
我注意到this question谈到了类似的问题,但没有一个解决方案适用于我。