Oracle.DataAccess.Dll chargement de la question sur x-64 machine
J'ai un .net programme exe qui est de l'utilisation d'Oracle.DataAccess, Version=2.121.1.0 dll. Ma machine de développement et de serveur de build tfs les deux sont en 32 bits. Tout fonctionne bien sur les 32 machines.
Mais maintenant, je dois migrer ce programme sur 64 bits (Windows Server 2012 R2) et tous mes problèmes ont commencé à partir de là. Je reçois la fameuse erreur impossible de charger le fichier ou l'assembly 'Oracle.DataAccess, Version=2.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342' ou une de ses dépendances..
J'ai googlé beaucoup et essayé différentes choses jusqu'à présent:
- Spécifiquement construire la executeble pour cible plate-forme X86 en modifiant les propriétés du projet option de Compilation
- J'ai installé Oracle dll sur la machine et il est enregistré avec succès dans le GAC
- Essayé de construire l'exécutable à la cible "any CPU" et quand il ne fonctionne pas essayé X64 ainsi
- Spécifiquement fourni l'assemblée de liaison de l'information dans l'app.fichier de configuration de regarder à l'endroit exact pour le chargement de la dll.
- Tourné sur la Fusion journal pour voir exactement la cause de l'échec
Consultez le journal des erreurs ci-dessous:
29/01/2015 10:57:30;ALERTE ;le Système.Exception interceptée dans main() 29/01/2015 10:57:30;ERREUR ;le Système.BadImageFormatException: impossible de charger le fichier ou l'assembly 'Oracle.DataAccess, Version=2.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342' ou une de ses dépendances. Une tentative a été faite pour charger un programme avec un format incorrect. Nom de fichier: "Oracle.DataAccess, Version=2.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342' à XXXX.Commun.Des composants.OraDataAccess..ctor() à XXXX.De la bibliothèque.ValuesCore.ValuesCore..ctor() à XXXX.De la bibliothèque.DerivationsCore.Dérivations..ctor() à XXXX.Les processus.XXXX.Principal.Main() === Pré-lier les informations d'état === LOG: Utilisateur = XX JOURNAL: DisplayName = Oracle.DataAccess, Version=2.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342 (Complètement spécifié) JOURNAL: Appbase = file:///D:/Presse/JOURNAL: Initiale PrivatePath = NULL Appel d'assemblage : XXXX.CommonComponents, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e9b31bf34182bd8b. === Le JOURNAL: Cette liaison commence en charge par défaut le contexte. JOURNAL: l'Utilisation de fichier de configuration d'application: D:\Release\XXXX.exe.Config JOURNAL: l'Utilisation de la machine fichier de configuration de C:\Windows\Microsoft.NET\Framework64\v2.0.50727\config\machine.config. JOURNAL: Post-politique de référence: Oracle.DataAccess, Version=2.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342 JOURNAL: Tentative de téléchargement de la nouvelle URL file:///C:/Oracle/odp.net/bin/2.x/Oracle.DataAccess.dll. Erreur: Échec pour terminer l'installation de l'assemblée (hr = 0x8007000b). Sondage terminé. 29/01/2015 10:57:30;ERREUR ;impossible de charger le fichier ou l'assembly 'Oracle.DataAccess, Version=2.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342' ou une de ses dépendances. Une tentative a été faite pour charger un programme avec un format incorrect. 29/01/2015 10:57:30;ALERTE ;(Global) Point Source ID = 0, Calc Temps = 29/01/2015 10:57:30. 29/01/2015 10:57:30;ARRÊTER ;
Toute aide est désespérément nécessaire et sera grandement apprécié.
Grâce
Salut Steve, oui je l'ai fait, mais encore il ne fonctionne pas 🙁
OriginalL'auteur binu | 2015-01-29
Vous devez vous connecter pour publier un commentaire.
L'architecture (x86 ou x64) de Oracle.DataAccess.dll doit correspondre à l'architecture de installé le Client Oracle et deux d'entre eux doivent correspondre à l'architecture de votre application déployée (c'est à dire que vous avez compilé à "AnyCPU" ou "x86" ou "x64").
"AnyCPU" se donnera pour objectif de x64 sur un Windows 64 bits.
La meilleure solution est d'installer les versions x86 et x64 Client Oracle (et selon ODP.NET sur votre machine, alors toute combinaison de travail. Voici une des instructions sur la façon de le faire: Installer Oracle x86 et x64
Une alternativ solution est d'utiliser la ODP.NET Géré Pilote, cela fonctionne en tout cas. Vous pouvez le télécharger ici: 64-bits de Données Oracle Access Components (ODAC) Téléchargements
Je ne peux pas utiliser Oracle 64 bits Composants d'Accès aux Données comme mon dev et de construire la machine, les deux sont toujours sur le mode 32-bit.
Non, votre exe recherches
Oracle.DataAccess.dll
dans votre GAC (Global Assembly Cache). Si votre exe est x64 puisOracle.DataAccess.dll
pour x64 sera chargé. Si cette version n'existe pas, ce sera un échec. LeODP.NET Managed Driver
travaille également sur x86 (32 bits) sans aucun problème.Merci, donc, suggérez-vous que je devrais installer ODP.NET Géré Pilote sur toutes les machines que j'.e de Développement, de construction et de Déploiement et qui résoudra le conflit de version?
Oui, effectivement il n'y a rien à installer. Il suffit de copier le
Oracle.ManagedDataAccess.dll
pour le dossier de l'application, c'est tout.OriginalL'auteur Wernfried Domscheit