Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Warum funktioniert die Xcopy-Bereitstellung von ODP.NET 11 nicht auf einem Computer, auf dem Oracle DB 10 installiert ist?

So wie ich es verstehe, war das Problem, dass sich Oracle.DataAccess.dll zwar im selben Verzeichnis wie die App befand, aber ihre untergeordneten Homies (oci usw.) nicht finden konnte, daher der Kompatibilitätsfehler.

Es stellt sich heraus, dass Sie, wenn Sie möchten, dass eine Anwendung mit der ODAC 11 xcopy-Bereitstellung funktioniert, unabhängig davon, was der Benutzer sonst noch auf seinem Computer installiert hat, zwei Dinge tun müssen:

  1. Setzen Sie die Umgebungsvariable PATH für den Prozess. (Das habe ich bereits getan.)
  2. Legen Sie die Umgebungsvariable ORACLE_HOME für den Prozess fest. (Das habe ich nicht gemacht.)

    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);
    

BEARBEITEN: Es ist auch wichtig zu beachten, dass Oracle diesen Fehler nicht nur bei Umgebungsproblemen auslöst, sondern auch, wenn eine der Dateien auf dem Zielcomputer fehlt. Ich habe trotz der Umgebungseinstellungen denselben Fehler auf anderen Computern erhalten, weil ich Subversion so eingestellt hatte, dass es Verzeichnisse namens "bin" ignoriert, sodass die OraOps-DLL nicht auf den Client kopiert wurde.