Как я могу указать Oracle Home для использования при использовании System.Data.OracleClient

Я работаю над надстройкой Excel (VSTO) в.NET, которая подключается к базе данных Oracle 10g.

Я работаю на Vista x64 и выяснил, что на моем компьютере должны быть установлены как клиенты Oracle x86, так и x64, чтобы можно было использовать как 32-разрядные процессы (например, PL/SQL Developer), так и 64-разрядные процессы (например, консольное приложение.NET). скомпилировано для "Любого процессора") можно подключиться к Oracle.

Это все работает нормально. Моя проблема заключается в том, что Excel является 32-разрядным приложением, в котором размещается.NET DLL, и, согласно ProcessMonitor, процесс Excel загружает клиент Oracle "OraClient10g_home1" по адресу "C:\oracle\product\10.2.0\client_1\BIN\oci".dll" (это 64-битный клиент), и это дает мне исключение BadImageFormatException, когда мой код.NET пытается его использовать.

Я хочу сказать.NET загрузить 32-битный клиент Oracle "OraClient10g_home2" (то есть "C:\oracle\product\10.2.0\client_2\BIN\oci.dll"). Как я могу сказать.NET использовать client_2 вместо client_1.

2 ответа

Решение

Попробуйте изменить DllPath в HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME\ODP.NET.

Вы могли бы:

  • изменить свой %PATH% перед загрузкой клиента Oracle SetEnvironmentVariable).
  • вместо этого используйте Oracle Instant Client. Некоторые преимущества суммированы здесь (суть: вы можете убедиться, какой клиент oracle будет использоваться вашим приложением).
Другие вопросы по тегам