Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Por que a implantação do ODP.NET 11 xcopy não funciona em uma máquina com o Oracle DB 10 instalado?


Então, pelo que entendi, o problema era que, enquanto o Oracle.DataAccess.dll estava no mesmo diretório que o aplicativo, ele não conseguiu encontrar seus homies de nível inferior (oci, et al), daí o erro de compatibilidade.

Acontece que, se você deseja que um aplicativo funcione com a implantação do ODAC 11 xcopy, independentemente do que mais o usuário possa ter instalado em sua máquina, você precisa fazer 2 coisas:
  1. Defina a variável de ambiente PATH para o processo. (Eu já estava fazendo isso.)

  2. Configure a variável de ambiente ORACLE_HOME para o processo. (Eu não estava fazendo isso.)
    Environment.SetEnvironmentVariable("PATH", Environment.CurrentDirectory + "\\oracle\\11.1\\odac;" + Environment.CurrentDirectory + "\\oracle\\11.1\\odac\\bin;", EnvironmentVariableTarget.Process);
    Environment.SetEnvironmentVariable("ORACLE_HOME", Environment.CurrentDirectory + "\\oracle\\11.1\\odac", EnvironmentVariableTarget.Process);
    

EDITAR: Também é importante observar que o Oracle lançará esse erro não apenas por questões ambientais, mas também se um dos arquivos estiver ausente na máquina de destino. Eu recebi esse mesmo erro em outras máquinas, apesar das configurações de ambiente, porque eu tinha o Subversion configurado para ignorar diretórios chamados "bin", então a DLL do OraOps não estava sendo copiada para o cliente.