Jadi seperti yang saya pahami, masalahnya adalah bahwa sementara Oracle.DataAccess.dll berada di direktori yang sama dengan aplikasi, ia tidak dapat menemukan homies tingkat yang lebih rendah (oci, et al), oleh karena itu kesalahan kompatibilitas.
Ternyata jika Anda ingin aplikasi bekerja dengan penerapan xcopy ODAC 11 terlepas dari apa pun yang mungkin telah diinstal pengguna di mesinnya, Anda perlu melakukan 2 hal:
- Setel variabel lingkungan PATH untuk proses. (Saya sudah melakukan ini.)
-
Setel variabel lingkungan ORACLE_HOME untuk proses. (Saya tidak melakukan ini.)
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);
EDIT: Penting juga untuk dicatat bahwa Oracle akan membuang kesalahan ini tidak hanya untuk masalah lingkungan, tetapi juga jika salah satu file hilang pada mesin target. Saya mendapatkan kesalahan yang sama pada mesin lain meskipun pengaturan Lingkungan karena saya telah mengatur Subversion untuk mengabaikan direktori yang disebut "bin", sehingga DLL OraOps tidak disalin ke klien.