Oracle
 sql >> Database >  >> RDS >> Oracle

Errore di mancata corrispondenza Oracle.DataAccess

Come hai detto, è solo un avvertimento. Poiché ODP.net non è "AnyCPU", l'avviso indica che hai una dipendenza che non si adatterà al sistema operativo host come lo è la tua applicazione. Finché la tua installazione di odp.net corrisponde al sistema operativo in termini di bit, starai bene. Ma il compilatore non è in grado di prendere questa decisione e sta cercando di avvisarti.

Ho trovato un articolo di connessione su questo che include una possibile modifica (presumo al file proj) per disabilitare l'errore:

<PropertyGroup>
<ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>None</ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch>
</PropertyGroup>

In ogni caso, la tua applicazione "AnyCPU" funzionerà correttamente sul tuo server purché odp.net a 32 bit che installi sul server sia la stessa versione di odp.net a 64 bit a cui hai fatto riferimento (o le politiche dell'editore sono installate correttamente su reindirizzare a una versione successiva). Per eliminare qualsiasi confusione, generalmente metto "Copy Local" per il riferimento su "false". In altre parole, compilo in base a una versione specifica della dll ma la lascio eseguire rispetto a ciò che risolve dal GAC (che include le politiche dell'editore incluse nella maggior parte delle installazioni di odp.net).

Puoi anche installare odp.net a 32 bit sulla tua macchina di sviluppo (idealmente di nuovo la stessa versione) per eseguire/debug di applicazioni a 32 bit o per utilizzare gli strumenti integrati forniti "con Oracle Developer Tools per Visual Studio" all'interno di Visual Studio.

Detto questo, c'è più di quanto sembri qui. Se la tua applicazione è effettivamente in esecuzione (il che è implicito con "è solo un avviso"), come 64 bit, NON sta usando la tua installazione a 32 bit. Immagino che sulla tua macchina sia già installata la versione a 64 bit (più case di Oracle).