it-swarm.dev

BadImageFormatException ao usar o Oracle Client 64 bit e o Visual Studio 2010!

Um dos nossos membros da equipe de desenvolvimento recebeu um erro

Tentativa de carregar bibliotecas do cliente Oracle lançou BadImageFormatException

Parece 

Esse problema ocorrerá ao executar no modo de 64 bits com os componentes do cliente Oracle de 32 bits instalados.

Mas fui eu quem configurou o sistema - Aqui estão as especificações:

  • Windows 7 de 64 bits
  • Visual Studio 2010 Premium
  • Cliente Oracle 11g R2 64Bit instalado como tempo de execução

Alguma ideia?

20
Data-Base

Eu tenho visto isso algumas vezes recentemente ao executar o Visual Studio em um 64Bit O/S. Um workround simples é instalar o cliente de 32 bits em sua máquina de desenvolvimento de 64 bits. 

Atenciosamente, Pete

9
HaggardPete

Eu sinto muito sobre adicionar uma segunda resposta, mas se você tiver 64 bits e 32 bits clientes instalados na mesma máquina, você pode encontrar esse problema também.

Dois clientes instalados

C:\Oracle\product\11.2.0\client32Bit
C:\Oracle\product\11.2.0\client64Bit

Controle seu caminho Variável de ambiente. Qual cliente Oracle é o primeiro, ele é carregado antes do outro.

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

Como meu cliente Oracle de 64 bits é o primeiro em PATH, o VS.NET tenta usá-lo para o Oracle Connections e lança uma exceção de imagem inválida.

  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"

Depois disso, você pode se conectar ao Oracle. Claro que você pode colocar o cliente 32Bit em primeiro lugar no caminho, mas eu prefiro colocar o cliente de 64 bits antes de 32 bits para outras aplicações.

19
Atilla Ozgur

Eu tive o mesmo erro após a atualização para o Windows 7. Eu resolvi isso alterando o destino de plataforma para x 86 na guia Build da página de propriedades no Visual Studio

9
Keith Ketterer

O mesmo problema que você pode enfrentar também no Visual Studio 2013 e no Oracle Client de 64 bits (versões 11 e 12). Minha solução é: 

a) Projeto de desktop . Propriedades do projeto> Construir> desativar a caixa de seleção 'Preferir 32 bits'.

b) ASP.NET projeto ou site. Menu principal> FERRAMENTAS> Opções> Projeto e soluções> Projetos da Web> ativar 'Use a caixa de seleção de versão de 64 bits de IIS Express para sites e projetos'.

6
codemonkey

Alterei suporte habilitado para 32 bits paraFALSEem meu pool de aplicativos no IIS7. Isso funcionou para mim. Eu achei fácil. Felicidades :)

3
SharpCoder

Se você quiser usar 64 bits, veja minha resposta aqui:
Configuração do Oracle DataAccess de 64 bits

Se você estiver satisfeito com 32 bits, basta instalar a versão de 32 bits do Oracle Data Access Components. Como o servidor de desenvolvimento do Visual Studio é de 32 bits, você não terá problemas.

0
Hüseyin Yağlı

A solução rápida e fácil para este problema você tem que seguir os passos abaixo apenas:

  1. Instale o ODACv11.2021Xcopy_x64, execute o arquivo install.bat e, em seguida, marque "c:\Oracle" como caminho criado.
  2. copie sua pasta de configuração de rede [que contém a pasta admin com o arquivo tnsnames.ora] no Oracle 32bit para "c:\Oracle".
  3. Adicionado o caminho "c:\Oracle" para a variável de ambiente PATH.

apreciar

Atenciosamente, Eng. Nawaf H. Bin Taleb.

0
Nawaf

Eu tenho a mesma exceção e descobri que ocorreu quando eu atualizei para a versão MVC superior a 2.0., No meu caso MVC 4.0.

Criar um novo projeto no MVC 2.0 resolveu o problema. 

0
thabet

Solução simples: funciona para mim. tente isso.

Passei quase 4 horas para encontrar a solução para o problema BadImageFormatException.

Cenário: VS 2012, eu estava tentando adicionar o modelo de entidade ao banco de dados Oracle pela primeira vez. Eu sabia que existem duas etapas para adicionar o modelo para o banco de dados Oracle: 

  1. Conecte o banco de dados Oracle usando o server explore (onde a string de conexão será criada e qual pode ser usada ao adicionar o modelo)
  2. Adicionar modelo usando o connectionstring existente (criado no passo 1).

Mas eu fui atingido no passo 1 com o aviso BadImageFormatException e encontrei a solução. Resolução:

  1. Siga as instruções fornecidas no link e conclua a instalação do cliente Oracle http://www.Oracle.com/technetwork/topics/dotnet/whatsnew/vs2012welcome-1835382.html
  2. Uma vez que a instalação foi concluída com sucesso, então, passo simples, ou seja, adicione modelo ao projeto. aqui use a string de conexão existente na lista suspensa e forneça userid/pwd.

então você está pronto para usar o modelo :)

0
Muru Bakthavachalam