Oracle
 sql >> Base de données >  >> RDS >> Oracle

Erreur de non-concordance Oracle.DataAccess

Comme tu l'as dit, ce n'est qu'un avertissement. Comme ODP.net n'est pas "AnyCPU", l'avertissement indique que vous avez une dépendance qui ne va pas s'adapter au système d'exploitation hôte comme l'est votre propre application. Tant que votre installation odp.net correspond au système d'exploitation en termes de bits, tout ira bien. Mais le compilateur est incapable de prendre cette décision et essaie de vous prévenir.

J'ai trouvé un article de connexion sur ce qui inclut un changement possible (je suppose au fichier proj) pour désactiver l'erreur :

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

Dans tous les cas, votre application "AnyCPU" fonctionnera correctement sur votre serveur tant que l'odp.net 32 ​​bits que vous installez sur le serveur est la même version que l'odp.net 64 bits que vous avez référencé (ou que les politiques de l'éditeur sont correctement installées pour rediriger vers une version ultérieure). Pour éliminer toute confusion, je règle généralement "Copy Local" pour la référence sur "false". En d'autres termes, je compile avec une version spécifique de la dll mais je la laisse s'exécuter avec ce qu'elle résout à partir du GAC (qui inclut les politiques d'éditeur que la plupart des installations odp.net incluent).

Vous pouvez également installer odp.net 32 ​​bits sur votre machine de développement (idéalement la même version à nouveau) afin d'exécuter/déboguer des applications 32 bits ou d'utiliser les outils intégrés fournis "avec Oracle Developer Tools for Visual Studio" à l'intérieur de Visual Atelier.

Cela dit, il y a plus qu'il n'y paraît ici. Si votre application est en fait en cours d'exécution (ce qui est sous-entendu par "ce n'est qu'un avertissement"), en tant que 64 bits, elle n'utilise PAS votre installation 32 bits. Je suppose que votre machine a déjà la version 64 bits installée (plusieurs foyers oracle).