2012-09-22 25 views
5

Ho problemi con Oracle.DataAccess in WPF. Ho usato Oracle.DataAccess v4.0 senza problemi. Ma ora è aggiornato alla versione 4.112 e quando aggiungo il riferimento a questa versione in WPF non è possibile caricare il designer. Mi dà il seguente errore:Impossibile caricare la versione Oracle.DataAccess

System.BadImageFormatException 
Could not load file or assembly 'Oracle.DataAccess, 
Version=4.112.3.0, Culture=neutral, 
PublicKeyToken=89b483f429c47342' or one of its dependencies. 
An attempt was made to load a program with an incorrect format. 

Si prega di notare che il programma funziona senza alcun problema. Ho letto che può essere dovuto alla "CPU di destinazione" nelle proprietà. Ho provato sia x64 che x86 ma non cambia nulla. Come posso risolvere questo problema. Grazie in anticipo

risposta

6

Il problema era con il mio file Oracle.DataAccess.dll. Ho scaricato ODAC 11 XCopy e copiato Oracle.DataAccess.dll da \ odp.net4 \ odp.net \ bin \ 4 nella cartella \ odp.net \ bin \ 4 del mio OracleClient e ho sostituito le DLL. Ora funziona perfettamente.

auguriamo che possa essere utile a qualcun altro

+0

ciao, Adil. quale versione di ODAC 11 XCopy è stata scaricata?Ho provato con ODAC 11 XCopy Release 5 e ora funziona per me –

+0

Ciao @JackDaniel. Sono felice che abbia funzionato per te. Mi dispiace, ma non ricordo ora –

3

Ho affrontato lo stesso problema che ho risolto inserendo DLL di dipendenze in Oracle.DataAcces. controlla questo link What is the minimal setup required to deploy a .NET application with Oracle client 11?

Spero che dovrebbe aiutare.

+0

Cosa devo fare? Copia tutti questi ddls in tutte le mie applicazioni WPF? –

+0

Sì. Inseriscilo nella cartella Debug o Release dell'applicazione. Non c'è bisogno di fare riferimento solo a mettere con Oracle.DataAccess.dll –

+0

Ok. Grazie. Ma non parlano della modalità di progettazione WPF di cui stanno parlando Distribuzione o impostazione del programma. Ma proverò. Spero che possa essere d'aiuto –

0

ho affrontato questi problemi Via troppe volte. Di seguito sono riportati alcuni PowerShell che uso abitualmente per distribuire un'applicazione.

$target = "\\SERVER\c$\PROJECT" 
$oracleBin = "C:\oracle\product\11.2.0\client_1\BIN\" 
$projectHome = "C:\Users\USER\Code\CSharp\PROJECT\bin\Release\" 
$files = @(
($oracleBin + "oci.dll"), 
($oracleBin + "orannzsbb11.dll"), 
($oracleBin + "oraocci11.dll"), 
($oracleBin + "OraOps11w.dll"), 
($projectHome + "EntityFramework.dll"), 
($projectHome + "EntityFramework.xml"), 
($projectHome + "Oracle.DataAccess.dll"), 
($projectHome + "PROJECT.exe") 
#,($projectHome + "PROJECT.exe.config") 
) 
foreach($f in $files) { 
    copy-item $f $target 
} 

due note posso aggiungere qualcuno che lotta per risolvere questo problema:

  1. È possibile trovare la giusta casa Oracle (cioè dove la vostra Client_1 \ bin è), in base a dove si sta riferimento Oracle.DataAccess.dll da Visual Studio. Ho più case Oracle, quindi è stato un problema che ho dovuto superare un paio di volte.
  2. Quanto sopra funziona per Oracle 11g. Se si dispone di Oracle 12c, credo che un processo simile funzionerà, ma alcuni dei nomi dei file cambiano da * 11.dll a * 12.dll.

enter image description here

Problemi correlati