10

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

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,但我仍然收到此错误。我搜索了谷歌并看到了无数不同的方法,但我似乎无法解决这个问题。确保我的项目在 64 位机器上以 32 位模式运行的最佳方法是什么?

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

4

5 回答 5

12

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

此外,在讨论期间,人们正在谈论 32 位模式等。这是您可以检查/设置 IIS 7 托管应用程序的方式。您不需要更改此设置,但我已在此处添加以供完整性/将来参考。

  • 启动 IIS 7 并展开服务器名称节点。
  • 单击应用程序池节点并找到您正在使用的应用程序池。
  • 在右侧面板上单击高级设置...
  • 在出现的弹出框中选中启用的 32 位应用程序设置,这是从顶部开始的第三个选项。
于 2013-05-14T11:21:31.347 回答
5

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

如果这不可行,请使用 corflags.exe 强制现有 exe 成为 32 位应用程序。

于 2013-05-14T08:41:04.620 回答
2

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

于 2014-06-24T17:17:31.543 回答
1

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

于 2017-02-21T07:44:34.617 回答
0

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

于 2014-08-04T11:06:17.960 回答