2012-09-22 27 views
5

Tengo problemas con Oracle.DataAccess en WPF. Utilicé Oracle.DataAccess v4.0 sin ningún problema. Pero ahora se actualizó a la versión 4.112 y cuando agregué una referencia a esta versión en WPF, no se pudo cargar el diseñador. Me da el siguiente error:Oracle.DataAccess versión no se pudo cargar

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. 

Tenga en cuenta que el programa se ejecuta sin ningún problema. Leí que puede deberse a "CPU objetivo" en las propiedades. Probé tanto x64 como x86 pero nada cambia. Como puedó resolver esté problema. Gracias de antemano

Respuesta

6

El problema estaba en mi archivo Oracle.DataAccess.dll. He descargado ODAC 11 XCopy y he copiado Oracle.DataAccess.dll de \ odp.net4 \ odp.net \ bin \ 4 en la carpeta \ odp.net \ bin \ 4 de OracleClient y he reemplazado dlls. Ahora funciona como un encanto!

Esperamos que sea de utilidad para alguien más

+0

hola, Adil. ¿Qué versión de ODAC 11 XCopy has descargado?Intenté con ODAC 11 XCopy Release 5 y ahora es mi trabajo –

+0

Hola @JackDaniel. Me alegra que haya funcionado para ti. Lo siento, pero no recuerdo ahora –

3

Me enfrenté al mismo problema que resolví poniendo las dependencias de DLL a Oracle.DataAcces. mira este enlace What is the minimal setup required to deploy a .NET application with Oracle client 11?

Espero que te ayude.

+0

¿Qué debo hacer? Copie todos estos ddls a todas mis aplicaciones WPF? –

+0

Sí. Ponlo en la carpeta de Debug o Release de la aplicación. No es necesario hacer referencia a él, solo se requiere ponerlo con Oracle.DataAccess.dll –

+0

Ok. Gracias. Pero no hablan sobre el modo de diseño de WPF de lo que están hablando Implementación o configuración del programa. Pero lo intentaré. Espero que ayude –

0

he tratado con este los problemas demasiadas veces. A continuación se muestra un poco de PowerShell que utilizo habitualmente para implementar una aplicación.

$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 
} 

dos notas que puedo agregar a alguien que está luchando para resolver este problema:

  1. se puede encontrar el inicio de Oracle correcta (es decir, cuando su client_1 \ bin es), en función de donde nos estamos refiriendo Oracle.DataAccess.dll desde Visual Studio. Tengo varios hogares Oracle, por lo que ha sido un problema que he tenido que superar algunas veces.
  2. Lo anterior funciona para Oracle 11g. Si tiene Oracle 12c, creo que un proceso similar funcionará, pero algunos de los nombres de los archivos cambian de * 11.dll a * 12.dll.

enter image description here

Cuestiones relacionadas