Как я могу указать Oracle Home для использования при использовании System.Data.OracleClient - PullRequest
4 голосов
/ 22 сентября 2009

Я работаю над надстройкой 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 ]

4 голосов
/ 23 сентября 2009

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

2 голосов
/ 23 сентября 2009

Вы могли бы:

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