在64位计算机上以32位模式运行Oracle客户端

我刚刚从32位Windows 7桌面迁移到64位Windows 7笔记本电脑。 我们正在开发一个包含解决方案中大约60个项目的C#程序。 我在尝试构建时遇到以下错误:

Attempt to load Oracle client libraries threw BadImageFormatException. This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed 

显然错误是非常自我解释的,我试图让我的整个解决方案以32位模式加载。 我已经完成了每个项目并将目标平台设置为x86,但我仍然遇到此错误。 我搜索过Google并看到了无数不同的方法,但我似乎无法解决这个问题。 确保我的项目在64位计算机上以32位模式运行的最佳方法是什么?

我正在使用Visual Studio 2008.我目前正在考虑降级到32位,但我真的想避免这样做。

我发现即使您在64位计算机上运行,​​也必须安装32位Oracle客户端(您可以从他们的网站下载安装程序 )。

此外,在讨论期间,人们讨论的是32位模式等。这是您可以检查/设置IIS 7托管应用程序的方法。 你不应该改变这个,但我在这里添加了完整性/未来参考。

  • 启动IIS 7并展开服务器名称节点。
  • 单击Application Pools节点,找到您正在使用的应用程序池。
  • 在右侧面板上,单击“ 高级设置”…
  • 在出现的弹出框中,选中“ 启用32位应用程序”设置,这是从顶部开始的第三个选项。

您必须将主.exe文件更改为仅以32位运行。 您可以在Visual Studio中执行此操作 – 只需将Platform目标从“Any CPU”更改为“x86”即可。

如果无法做到这一点,请使用corflags.exe强制现有的exe为32位应用程序。

几个月来我一直在努力解决这个问题,最后解决了这个问题。 我认为所有post都有帮助,但我有一个缺失的部分。 我没有用于用户DSN或系统DSN的Oracle ODBC实例设置。 我正在使用Windows 8机器。 所以对我来说,我必须进入常规Windows搜索并输入ODBC并打开ODBC数据源管理器(32位)。 检查用户DSN选项卡或系统DSN选项卡上是否有Microsoft ODBC for Oracle设置。 如果没有,请单击“添加”,然后选择“Microsoft ODBC for Oracle”。 填写您要点击的数据源的信息,然后单击“确定”。 确保重新启动计算机,这最终对我有用。 希望这有助于你们中的一些人。

在我的情况下,我的机器上安装了64位Oracle客户端,但仍然出现相同的错误。 所以,我已经分析了在我的应用程序中转到应用程序右键单击转到 – >属性 – > Web选项卡,如果您使用的是本地IIS Web服务器,则取消选中“使用IIS Express”选项。 问题解决了。

您必须将主.exe文件更改为仅以32位运行。 您可以在Visual Studio中执行此操作 – 只需将Platform目标从“Any CPU”更改为“x86”即可。 https://msdn.microsoft.com/en-us/library/ms185328.aspx