sql >> Base de Datos >  >> RDS >> Oracle

Error de discrepancia de Oracle.DataAccess

Como dijiste, es solo una advertencia. Debido a que ODP.net no es "AnyCPU", la advertencia indica que tiene una dependencia que no se adaptará al sistema operativo host como lo hace su propia aplicación. Mientras su instalación de odp.net coincida con el sistema operativo en términos de bits, estará bien. Pero el compilador no puede tomar esa determinación y está tratando de avisarle.

Encontré un artículo de conexión en esto que incluye un posible cambio (supongo que en el archivo proj) para deshabilitar el error:

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

En cualquier caso, su aplicación "AnyCPU" funcionará bien en su servidor siempre que el odp.net de 32 bits que instale en el servidor sea la misma versión que el odp.net de 64 bits al que hizo referencia (o las políticas del editor estén instaladas correctamente para redirigir a una versión posterior). Para eliminar cualquier confusión, generalmente establezco "Copia local" para la referencia a "falso". En otras palabras, compilo contra una versión específica de la dll pero dejo que se ejecute contra lo que resuelve del GAC (que incluye las políticas del editor que incluyen la mayoría de las instalaciones de odp.net).

También puede instalar odp.net de 32 bits en su máquina de desarrollo (idealmente, la misma versión nuevamente) para ejecutar/depurar aplicaciones de 32 bits o usar las herramientas integradas que vienen "con Oracle Developer Tools para Visual Studio" dentro de Visual Estudio.

Dicho todo esto, hay más de lo que parece aquí. Si su aplicación se está ejecutando de hecho (lo que está implícito con "es solo una advertencia"), como 64 bits, entonces NO está utilizando su instalación de 32 bits. Supongo que su máquina ya tiene instalada la versión de 64 bits (múltiples hogares de Oracle).