Visual studio 2010 .NET4.0 VS2010中的Oracle.DataAccess 2.112.1.0参考问题

Visual studio 2010 .NET4.0 VS2010中的Oracle.DataAccess 2.112.1.0参考问题,visual-studio-2010,oracle,.net-4.0,odp.net,data-access,Visual Studio 2010,Oracle,.net 4.0,Odp.net,Data Access,我的项目中引用了Oracle.DataAccess 2.112.1.0版本。每当我运行项目时,我都会遇到一个错误,无法加载程序集。我检查了.csproj文件中引用的dll的条目,发现引用的dll是Oracle.DataAccess 2.111.7.0。我非常确定引用的dll是Oracle.DataAccess2.112.1.0,但不确定为什么项目文件中的条目不同。任何指向这一点的指针都会很有帮助,因为这个问题已经困扰了我很长时间。当客户机在其引用中使用2.112.1.0,但它一直引用本地机器2.

我的项目中引用了Oracle.DataAccess 2.112.1.0版本。每当我运行项目时,我都会遇到一个错误,无法加载程序集。我检查了.csproj文件中引用的dll的条目,发现引用的dll是Oracle.DataAccess 2.111.7.0。我非常确定引用的dll是Oracle.DataAccess2.112.1.0,但不确定为什么项目文件中的条目不同。任何指向这一点的指针都会很有帮助,因为这个问题已经困扰了我很长时间。

当客户机在其引用中使用2.112.1.0,但它一直引用本地机器2.112.3.0时,我发现了同样的问题

原因是,当安装在GAC中时,它会插入一个策略文件(GAC级别的配置项),以将DLL重定向到其较新版本。即使文件位于同一目录中,.NET 2+也会在允许应用程序自行解析程序集之前检查GAC是否有任何策略

我尝试过在你的App/Web.config文件中手动重定向,但我发现这对我不起作用,下面将详细介绍

完成此操作后,您可能会遇到以下问题:

  • BadImageFormatException-图像格式不正确
    (或类似内容)
和/或

  • 版本不匹配-主要/次要版本不匹配
    (或类似内容)
这些错误表明,尽管您的旧程序集现在正在使用中,但不需要它引用的COM程序集。我的调查发现Oracle ODP.NET程序集将其COM DLL版本硬编码存储在其中

对我来说唯一的解决办法就是

  • 取消GAC您的应用程序自动引用的2.112.X.0
  • 将特定于版本的COM DLL复制到其他目录(如\LIB)
  • 在生成时将它们复制到生成中
  • 如果这一切都失败了,我建议完全卸载Oracle ODP.NET,手动删除Oracle目录,然后在重新启动后,直接从MSI安装旧的DLL。甲骨文似乎已经将所有驱动程序的历史记录存储在了网上


    祝你好运

    当客户端在其引用中使用2.112.1.0时,我发现了相同的问题,但它一直引用本地机器2.112.3.0

    原因是,当安装在GAC中时,它会插入一个策略文件(GAC级别的配置项),以将DLL重定向到其较新版本。即使文件位于同一目录中,.NET 2+也会在允许应用程序自行解析程序集之前检查GAC是否有任何策略

    我尝试过在你的App/Web.config文件中手动重定向,但我发现这对我不起作用,下面将详细介绍

    完成此操作后,您可能会遇到以下问题:

    • BadImageFormatException-图像格式不正确
      (或类似内容)
    和/或

    • 版本不匹配-主要/次要版本不匹配
      (或类似内容)
    这些错误表明,尽管您的旧程序集现在正在使用中,但不需要它引用的COM程序集。我的调查发现Oracle ODP.NET程序集将其COM DLL版本硬编码存储在其中

    对我来说唯一的解决办法就是

  • 取消GAC您的应用程序自动引用的2.112.X.0
  • 将特定于版本的COM DLL复制到其他目录(如\LIB)
  • 在生成时将它们复制到生成中
  • 如果这一切都失败了,我建议完全卸载Oracle ODP.NET,手动删除Oracle目录,然后在重新启动后,直接从MSI安装旧的DLL。甲骨文似乎已经将所有驱动程序的历史记录存储在了网上


    祝你好运

    尝试先删除引用,然后再添加回引用(使用浏览)。尝试了很多次,但项目文件条目仍然没有更改。我试图用记事本编辑项目文件。但是仍然收到相同的错误。dll的位置和版本可以在属性中找到(在引用中,右键单击Oracle.DataAccess并选择属性)。我知道位置和版本,并且我确信当我右键单击引用时,它显示的路径与项目文件的引用部分中输入的路径不同(.csproj)在我的解决方案中。我的问题是,原因是什么?请尝试先删除引用,然后再添加回引用(使用浏览)。尝试了很多次,但项目文件条目仍然没有更改。我尝试使用记事本编辑项目文件。但仍然收到相同的错误。dll的位置和版本可以在属性中找到(在引用中,右键单击Oracle.DataAccess并选择属性)我知道位置和版本,我确信当我右键单击引用时,它会显示一个不同的路径,该路径在我的解决方案中的项目文件(.csproj)的引用部分输入。我的问题是,这是什么原因?