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