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

12

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

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


你使用的是哪个Oracle客户端(32位还是64位)? - Belogix
2
我发现我必须安装32位的Oracle客户端(使用安装程序)才能使其工作,即使我在64位系统上运行。 - Belogix
谢谢您的提示。我对Oracle不是很了解。我能否只从网站上下载客户端并将tnsnames文件添加到其中,然后它就可以工作了?我过去只使用过共享驱动器上已设置好的客户端。 - Joseph
@Joseph - 很好,我很高兴能帮忙。我在下面详细阐述了我的答案。你可以标记为正确吗?这样其他遇到相同问题的人就可以更容易地找到它。我知道当我遇到此问题并在网上找不到任何资源时,我浪费了两天时间! - Belogix
@Belogix 我现在在 Visual Studio 中编辑 SSIS 包时遇到了完全相同的问题。有任何想法吗? - Joseph
显示剩余7条评论
5个回答

13

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

此外,在讨论中,人们谈到了32位模式等。以下是如何为托管在IIS 7上的应用程序检查/设置该模式的方法。您不应该需要更改这个,但为了完整性和将来的参考,我已经在这里添加了。

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

5

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

如果不可能进行此操作,请使用corflags.exe将现有exe强制成为32位应用程序。


工具栏中的下拉菜单中没有x86选项,所以我想我必须使用corflags.exe。从您友好提供的页面上,我猜我需要运行“CorFlags.exe assembly /32BIT+”。那么,这里的assembly值是什么?谢谢。 - Joseph
汇编 - 你的exe文件。在Visual Studio中,右键单击你的项目,选择属性。选择“生成”选项卡,在其中你有“平台目标”。在这个组合框中,你有任何CPU、x86、x64。 - Piotr Stapp
我刚刚在评论中看到您正在使用Web应用程序。您可以在IIS中进行设置:https://help.webcontrolcenter.com/KB/a1114/how-to-enable-32-bit-application-pool-iis-7-dedicatedvps.aspx - Piotr Stapp
我正在使用Visual Studio中内置的ASP.NET开发服务器,如何进行设置? - Joseph
请查看此处:http://go4answers.webhost4life.com/Example/force-aspnet-development-server-run-32-163751.aspx - Piotr Stapp
显示剩余2条评论

2

我已经苦苦挣扎了数月,最终解决了这个问题。我认为所有的帖子都很有用,但我缺少一个重要的部分。我没有为用户DSN或系统DSN设置Microsoft ODBC for Oracle实例。我正在Windows 8机器上工作。所以对于我来说,我必须去通用的Windows搜索中输入ODBC并打开ODBC数据源管理员(32位)。检查您是否在用户DSN选项卡或系统DSN选项卡上设置了Microsoft ODBC for Oracle。如果没有,请单击添加并选择Microsoft ODBC for Oracle。填写您要访问的数据源的信息,然后单击确定。确保重新启动计算机,这就是最终为我工作的方法。希望这能帮助到你们中的一些人。


1

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接