Questo post riguarda l'integrazione tra Oracle, Access su una piattaforma a 64bit!
In tutti i post del mondo spiegano come utilizzare Access su una piattaforma a 64bit compilando il nostro Assembly in X86 in modo che il Framework al momento del RUN forza l'eseguzione in WOW64 dove il supporto a Jet di Access è ancora supportato. Evito le polemiche sul perchè Microsoft non abbia fornito un Jet a 64bit ma va be', ci saranno motivi.

Il problema si ha quando il vostro exe/webapplication vuole accedere simultaneamente ad Oracle utilizzando ODAC Oracle.DataAccess.Client, i problemi più frequenti li troverete con BadImageFormat (che capita molto spesso se mettete il client a 64bit e nella vostra soluzione lasciate nel riferimento copialocalmente=true) oppure vi capita che non trovi la versione dell'assembly (che capita molto spesso se lasciate versionespecifica=true)


Come ho risolto:
Ho installato entrambi le versioni dell'Oracle Client in due ORACLE_HOME diverse ad esempio:
D:\oracle\product\10.2.0\client_1       VERSIONE NATIVA A 64BIT
D:\oracle\product\10.2.0\client_x86   VERSIONE A 32BIT IN EMULAZIONE WOW

Ho installato entambi le versioni ODAC.NET facendo attenzione a selezionare l'ORACLE_HOME corretta per piattaforma
Alla fine dinalmente nella C:\WINDOWS\assembly mi trovo tutti i miei bellissimi Assembly

Se non utilizzo Access allora compilo con AnyCPU e nella soluzione il riferimento ad Oracle.DataAccess ha copialocalmente = FALSE e versionespecifica = FALSE in modo che anche se sviluppo su una piattaforma a 32bit quando viene eseguita a 64 usa la versione corretta (2.102.3.2)
Se voglio utilizzare Access allora sono costretto ad andare in emulazione (X86) quindi con versionespecifica = TRUE lo forzo alla versione a 32bit (2.102.2.20) con la quale è stato compilato.

Come si comporta adesso:
Se lo lascio ANYCPU prova ad andare a 64bit usa il client nativo 64bit per Oracle e si schianta sull'Access ma se non lo uso vado tutto nativo a 64bit :)
Se lo lancio compilato in X86 adesso grazie all'emulazione WOW64 riesce ad utilizzare correttamente sia il Driver Jet che l'Oracle.DataAccess a 32bit installato nella ORACLE_HOME client_x86\odp.net (Attenzione perchè l'assembly nella GAC lo ho inserito a mano!)

La soluzione mi piace... NO, ancora non mi spiego perchè devo lavorare in emulazione per il fatto che mi hanno tolto il supporto di JET, voi vi chiederete perchè usi ancora Access... Io vi risponderò perchè fa quello per cui mi serve...

Ciao