Takže pokud tomu dobře rozumím, problém byl v tom, že zatímco Oracle.DataAccess.dll byl ve stejném adresáři jako aplikace, nemohl najít své přátele nižší úrovně (oci, et al), proto došlo k chybě kompatibility.
Ukázalo se, že pokud chcete, aby aplikace fungovala s nasazením ODAC 11 xcopy bez ohledu na to, co dalšího si uživatel na svůj počítač nainstaloval, musíte udělat 2 věci:
- Nastavte pro proces proměnnou prostředí PATH. (Už jsem to dělal.)
-
Nastavte proměnnou prostředí ORACLE_HOME pro proces. (To jsem nedělal.)
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);
UPRAVIT: Je také důležité poznamenat, že Oracle tuto chybu vyvolá nejen kvůli problémům s životním prostředím, ale také v případě, že na cílovém počítači chybí jeden ze souborů. Na jiných počítačích se mi objevila stejná chyba navzdory nastavení prostředí, protože jsem měl Subversion nastaven tak, aby ignoroval adresáře zvané "bin", takže OraOps DLL nebyla zkopírována do klienta.