23

我们的一位开发团队成员遇到了错误

尝试加载 oracle 客户端库抛出 BadImageFormatException

它似乎

在安装了 32 位 Oracle 客户端组件的 64 位模式下运行时会出现此问题。

但配置系统的是我——规格如下:

  • Windows 7 64 位
  • Visual Studio 2010 高级版
  • Oracle Client 11g R2 64Bit 作为运行时安装

有什么想法吗?

4

11 回答 11

19

我很抱歉添加第二个答案,但如果您在同一台机器上安装了 64 位和 32 位客户端,您也可能会遇到这个问题。

安装了两个客户端

C:\oracle\product\11.2.0\client32Bit
C:\oracle\product\11.2.0\client64Bit

控制您的路径环境变量。哪个 Oracle 客户端是第一个,它在另一个之前加载。

 echo %PATH%
 XXXX;C:\oracle\product\11.2.0\client64Bit\BIN;XXX

由于我的 64 位 Oracle 客户端位于 PATH 中,因此 VS.NET 尝试将其用于 Oracle 连接并引发错误图像异常。

  set PATH=C:\oracle\product\11.2.0\client32Bit\BIN;%PATH%
  REM Visual Studio 2008
  "C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe"
  REM Visual Studio 2010
  "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe"

之后就可以连接oracle了。当然,您可以将 32 位客户端放在路径中,但对于其他应用程序,我更喜欢将 64 位客户端放在 32 位之前。

于 2011-12-15T13:49:13.310 回答
11

在 Visual Studio 2013 和 64 位 Oracle 客户端(11 和 12 版本)中也可能遇到同样的问题。我的解决方案是:

a) 桌面项目。项目属性 > 构建 > 禁用“首选 32 位”复选框。

b) ASP.NET 项目或网站。主菜单 > 工具 > 选项 > 项目和解决方案 > Web 项目 > 启用“为网站和项目使用 64 位版本的 IIS Express”复选框。

于 2015-04-29T19:15:58.550 回答
9

我最近在 64 位操作系统上运行 Visual Studio 时看到过几次。一个简单的解决方法是在您的 64 位开发机器上安装 32 位客户端。

问候,皮特

于 2011-05-16T16:16:39.333 回答
9

升级到 Windows 7 后我遇到了同样的错误。我通过在 Visual Studio 的“属性”页面的“构建”选项卡中将平台目标更改为 x86 来解决它

于 2013-10-14T13:46:53.200 回答
3

我在 IIS7 的应用程序池中将启用 32 位的支持更改为FALSE 。这对我有用。我发现这很容易。干杯:)

于 2013-03-08T11:00:39.087 回答
0

此问题的快速简便的解决方案,您只需执行以下步骤:

  1. 通过运行 install.bat 文件安装 ODACv11.2021Xcopy_x64,然后检查“c:\oracle”作为创建的路径。
  2. 将 oracle 32 位中的网络配置文件夹 [包含带有 tnsnames.ora 文件的管理文件夹] 复制到“c:\oracle”。
  3. 将“c:\oracle”路径添加到 PATH 环境变量。

请享用

最好的问候,英。纳瓦夫·H·宾·塔勒布。

于 2013-02-17T17:51:47.950 回答
0

我遇到了同样的异常,我发现它发生在我升级到高于 2.0 的 MVC 版本时,在我的例子中是 MVC 4.0。

在 MVC 2.0 中创建一个新项目解决了这个问题。

于 2013-06-27T11:15:32.307 回答
0

如果您想使用 64 位,请在此处查看我的回答:
64 位 Oracle 数据访问配置

如果您对 32 位感到满意,只需安装 32 位版本的 Oracle 数据访问组件。由于 Visual Studio 的开发服务器是 32 位的,所以不会有任何问题。

于 2013-07-18T11:01:13.573 回答
0

简单的解决方案:对我有用。试试这个。

我花了将近 4 个小时才找到 BadImageFormatException 问题的解决方案。

场景: VS 2012,我第一次尝试将实体模型添加到 Oracle 数据库。我知道为 oracle 数据库添加模型有两个步骤:

  1. 使用 server explore 连接 oracle 数据库(将在其中创建连接字符串并且可以在添加模型时使用)
  2. 使用现有的连接字符串添加模型(在步骤 1 中创建)。

但是我在步骤 1 中被 BadImageFormatException 警告击中,我找到了解决方案。 解析度:

  1. 按照链接中给出的说明完成 oracle 客户端安装http://www.oracle.com/technetwork/topics/dotnet/whatsnew/vs2012welcome-1835382.html
  2. 一旦安装成功完成,那么简单的步骤即。将模型添加到项目中。这里使用下拉列表中的现有连接字符串并提供用户 ID/密码。

那么你就可以使用模型了:)

于 2015-03-28T22:47:54.577 回答
0

如果您通过 Visual Studio 运行应用程序,则通过访问工具中“项目和解决方案”下的“Web 项目”选项,将“使用 64 位版本的 IIS Express 用于网站和项目”复选框设置为选中状态 - >Visual Studio 中的选项菜单。

于 2019-11-05T10:36:57.997 回答
-1

我遇到了同样的问题,Muru 分享的解决方案对我有用:

http://www.oracle.com/technetwork/topics/dotnet/whatsnew/vs2012welcome-1835382.html

只需安装 ODAC 和

于 2017-02-23T14:11:08.723 回答