2009-09-22 22 views
4

我正在使用.NET連接到Oracle 10g數據庫的Excel Addin(VSTO)。如何在使用System.Data.OracleClient時指定要使用的Oracle主目錄

我在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 \ BIN \ oci」中加載「OraClient10g_home1」Oracle客戶端。 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。

回答

4

嘗試更改HKEY_LOCAL_MACHINE \ SOFTWARE \ ORACLE \ HOME \ ODP.NET中的DllPath。

+1

您也可以在app.config中更改它。 http://download.oracle.com/docs/html/E10927_01/InstallODP.htm – Christian13467

+0

這就是我最後做的 – d4nt

+0

你說你使用Microsoft提供的Oracle(System.Data.OracleClient)。我非常驚訝(至少可以這麼說),設置這個特定於Oracle提供程序(Oracle.DataAccess)的參數應該可以解決您的問題。 – Mac

2

您可以:

+0

太好了。我如何告訴.NET使用即時客戶端? – d4nt

+0

只需將它沿着您的應用程序發送:http://stackoverflow.com/questions/70602/what-is-the-minimum-client-footprint-required-to-connect-c-to-an-oracle-database – Mac

+1

這就是說我如何打包oracle客戶端,但我們如何告訴.net使用我們的應用中包含的那些DLL,而不是安裝在我的PC上的完整客戶端。我沒有看到如何使文件夾中的即時客戶端改變.net使用的內容? – d4nt

相關問題