我正在使用.NET中的Excel Addin(VSTO)连接到Oracle 10g数据库。
我在Vista x64上运行并且已经发现我需要在我的机器上安装x86和x64 Oracle客户端,以便32位进程(如PL / SQL Developer)和64位进程(如示例)。为“任何CPU”编译的NET控制台应用程序可以连接到Oracle。
这一切都很好。我的问题是Excel是一个托管.NET DLL的32位应用程序,根据ProcessMonitor,excel进程正在“C:\ oracle \ product \ 10.2.0 \ client_1 \”中加载“OraClient10g_home1”Oracle客户端BIN \ oci.dll“(恰好是64位客户端),当我的.NET代码试图使用它时,它会给我一个BadImageFormatException。
我想要的是告诉.NET加载32位“OraClient10g_home2”Oracle客户端(即“C:\ oracle \ product \ 10.2.0 \ client_2 \ BIN \ oci.dll”)。如何告诉.NET使用client_2而不是client_1。
答案 0 :(得分:4)
尝试更改HKEY_LOCAL_MACHINE \ SOFTWARE \ ORACLE \ HOME \ ODP.NET中的DllPath。
答案 1 :(得分:2)
你可以:
%PATH%
(使用SetEnvironmentVariable
)。