我的项目中引用了Oracle.DataAccess 2.112.1.0版本。每当我运行项目时,我都会收到错误无法加载程序集。我检查了.csproj文件中为引用的dll创建的条目,发现引用的dll是Oracle.DataAccess 2.111.7.0。我很确定引用的dll是Oracle.DataAccess2.112.1.0但不确定为什么项目文件中的条目不同。任何对此的指示都会有所帮助,因为这个问题长期困扰我。
答案 0 :(得分:1)
当客户端在其引用中使用2.112.1.0时,我发现了同样的问题,但它仍然引用了本地2.112.3.0的计算机。
原因是,当安装在GAC中时,它会插入一个策略文件 - 一个GAC级别配置条目,以将您的DLL重定向到其较新版本。即使您将文件放在同一个目录中,.NET 2+也会在允许您的应用程序解析程序集本身之前检查GAC是否有任何策略。
我尝试过的是App / Web.config文件中的手动重定向,但我发现这对我不起作用,详见Redirecting Assembly Versions。
完成此操作后,您可能会遇到此问题:
BadImageFormatException - Image is not of correct format
(或类似的东西)和/或
Version mismatch - The major/minor version does not match
(或类似的东西)这些错误表明虽然您的旧程序集现在正在使用中,但它不会引用它引用的 COM 程序集。我的调查发现Oracle ODP.NET程序集存储了其硬编码的COM DLL版本。
为我做的唯一解决方案是
如果全部失败,我建议完全卸载Oracle ODP.NET,手动删除Oracle目录,然后重启后直接从MSI安装旧的DLL。 Oracle似乎已经在Oracle's website上存储了驱动程序的整个历史记录。
祝你好运!