Referenciar Oracle.DataAccess.dll 64Bits no projeto .Net
13 respostas
R
robsonsan
Feras,
fiz um publish de uma aplicação .net em minha maquina local que esta funcionando numa boa,
porém quando publiquei e joguei essa aplicação no servidor recebi o erro abaixo, pesquisando percebi que em minha maquina local a aplicação executa em um ambiente 32bits,
e no servidor e 64 como eu altero a referência no projeto em minha maquina local para publicar a aplicação apontando para usar a referencia do Oracle.DataAccess.dll 64Bits ?
fiz um publish de uma aplicação .net em minha maquina local que esta funcionando numa boa,
porém quando publiquei e joguei essa aplicação no servidor recebi o erro abaixo, pesquisando percebi que em minha maquina local a aplicação executa em um ambiente 32bits,
e no servidor e 64 como eu altero a referência no projeto em minha maquina local para publicar a aplicação apontando para usar a referencia do Oracle.DataAccess.dll 64Bits ?
Opa, robsonsan, beleza?
Estou migrando meu servidor de 32 para 64 bits, e tive que fazer essas alterações nos meus projetos.
O que você deve fazer:
1.: Vá na sua pasta de instalação do Oracle, procure pela pasta do ODP.NET, pela pasta bin e pela pasta 4. Lá dentro, você vai achar a dll Oracle.DataAcess que você necessita. 2.: Agora é só referenciar no seu projeto e fazer uso dela.
R
robsonsan
Nicolas eu fiz isso mas quando eu faço o build no projeto da esse erro
E dentro da pasta bin tem 2 pastas umas 2.x e a 4 por default a aplicação esta apontando para a pasta 2.x quando tento mudar para a pasta 4 a aplicação fica com erros quando eu faço o build, quando eu altero para a pasta 2.x o build da certo
N
Nicolas_Fernandes
robsonsan:
Nicolas eu fiz isso mas quando eu faço o build no projeto da esse erro
E dentro da pasta bin tem 2 pastas umas 2.x e a 4 por default a aplicação esta apontando para a pasta 2.x quando tento mudar para a pasta 4 a aplicação fica com erros quando eu faço o build, quando eu altero para a pasta 2.x o build da certo
Saca só:
Eu crio, em todos os meus projetos, uma pasta LIB, onde guardo todas as .dlls usadas por ele. Então não tenho problema com mudança de instalação, local de arquivo, essas coisas, pois elas sempre estarão na pasta LIB, independente do caminho físico do projeto. Faz isso, pega a .dll da pasta 4 e copia para uma pasta LIB sua. Referencia a .dll que estiver lá no seu projeto, e testa pra gente.
R
robsonsan
Fiz o teste mas da o mesmo erro
N
Nicolas_Fernandes
Remove todas as referências, dá um Clean no projeto, adiciona só essa e dá um Rebuild, para só ficar essa referência no seu projeto.
R
robsonsan
Nicolas
fiz um teste ao invés de usar o using Oracle.DataAccess.Client; estou usando o using System.Data.OracleClient; e joguei minha aplicação no servidor
ai me gerou esse erro abaixo, como posso resolver isso, acho que tem uma forma que altero o Visual Studio para copilar para tanto quanto 32 Bits tanto para 64 Bits
fiz um teste ao invés de usar o using Oracle.DataAccess.Client; estou usando o using System.Data.OracleClient; e joguei minha aplicação no servidor
ai me gerou esse erro abaixo, como posso resolver isso, acho que tem uma forma que altero o Visual Studio para copilar para tanto quanto 32 Bits tanto para 64 Bits
não e isso ?
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.
Esqueça o uso da .dll nativa do .NET. Ela é feita para 32bits, e por isso você não vai conseguir. Eu usava ela mesma, e tive que fazer essa conversão para a Oracle.DataAccess. Você obrigatoriamente vai ter que usá-la. Mas eu não tô entendendo o que tá acontecendo contigo. Eu troquei o driver das minhas aplicações, referenciei o Oracle.DataAccess, alterei a string de conexão nos projetos rodando com ADO.NET, não mexi nos projetos rodando com NHibernate, e funcionou perfeitamente. Tô curioso do porquê não estar funcionando aí rs
R
robsonsan
Então não posso usar o using System.Data.OracleClient;
e tenho que usar o using Oracle.DataAccess.Client
e isso mesmo ?
N
Nicolas_Fernandes
robsonsan:
Então não posso usar o using System.Data.OracleClient;
e tenho que usar o using Oracle.DataAccess.Client
e isso mesmo ?
Exato.
R
robsonsan
Nicolas,
a aplicação na minha maquina funciona normalmente ai fiz o seguinte teste:
Exclui a referencia da dll Oracle.DataAccess.dll no VS e publiquei a aplicação,
dentro da pasta bin eu tenho a ddl Oracle.DataAccess.dll,
fiz um teste pegando a dll que esta no caminho da minha maquina local"[home]product\11.2.0\client_1\odp.net\bin[b]2.x[/b]" e coloquei no projeto publicado na pasta bin do server… E me gerou o erro The provider is not compatible with the version of Oracle client
Quando eu coloco a dll do caminho minha maquina local “[home]product\11.2.0\client_1\odp.net\bin\4” na pasta bin do projeto publicado no server da o erro
“Não foi possível carregar arquivo ou assembly ‘Oracle.DataAccess’ ou uma de suas dependências. Foi feita uma tentativa de se carregar um programa com um formato incorreto.”