2009-09-22 8 views
4

Je travaille sur un AddIn Excel (VSTO) dans .NET qui se connecte à une base de données Oracle 10g. Je suis sous Vista x64 et j'ai compris que j'avais besoin des clients Oracle x86 et x64 installés sur ma machine pour que les deux processus 32 bits (comme PL/SQL Developer) et les processus 64 bits (comme un exemple L'application de console .NET compilée pour "Any CPU") peut se connecter à Oracle.Comment puis-je spécifier l'Oracle Home à utiliser lors de l'utilisation de System.Data.OracleClient?

Tout cela fonctionne très bien. Mon problème est que Excel est une application 32 bits hébergeant une DLL .NET et, selon ProcessMonitor le processus Excel charge le client Oracle "OraClient10g_home1" à "C: \ Oracle \ product \ 10.2.0 \ client_1 \ BIN \ oci. dll "(qui se trouve être le client 64 bits) et qui me donne une exception BadImageFormatException lorsque mon code .NET essaie de l'utiliser. Ce que je veux, c'est dire à .NET de charger le client Oracle "OraClient10g_home2" 32 bits (c.-à-d. "C: \ oracle \ product \ 10.2.0 \ client_2 \ BIN \ oci.dll"). Comment puis-je dire à .NET d'utiliser client_2 au lieu du client_1.

Répondre

4

Essayez de modifier le DllPath dans HKEY_LOCAL_MACHINE \ SOFTWARE \ ORACLE \ HOME \ ODP.NET.

+1

Vous pouvez également le modifier dans app.config. http://download.oracle.com/docs/html/E10927_01/InstallODP.htm – Christian13467

+0

C'est ce que j'ai fait à la fin – d4nt

+0

Vous dites que vous utilisez le fournisseur Microsoft pour Oracle (System.Data.OracleClient). Je suis très surpris (pour dire le moins) que la définition de ce paramètre spécifique au fournisseur Oracle (Oracle.DataAccess) devrait résoudre votre problème. – Mac

2

Vous pouvez:

+0

C'est génial. Comment puis-je dire .NET pour utiliser le client instantané? – d4nt

+0

Il suffit de l'expédier le long de votre application: http://stackoverflow.com/questions/70602/what-is-the-minimum-client-footprint-required-to-connect-c-to-an-oracle-database – Mac

+1

Cela dit moi comment empaqueter le client d'Oracle, mais comment dirons-nous. Net pour employer ces DLL que nous avons inclus dans notre application par opposition au client complet qui est installé sur mon PC. Je ne vois pas comment avoir le client instantané dans un dossier changera ce que .net utilise? – d4nt

Questions connexes