Oracle.Dataaccess est dans le GAC. Puis-je contrôler la version que j'utilise?
J'ai un XCOPY déployable .NET application à l'aide d'Oracle.DataAccess (ODP.NET). Nous avons également déployer le client Oracle Instant dans le répertoire de l'application. Tout fonctionne bien, mais j'ai peur..
De l'Oracle ODP.NET FAQ:
Début avec ODP.NET 10.1.0.3, le programme d'installation de Oracle devra s'enregistrer
la suite de l'éditeur de stratégie de Dll dans le GAC (Global Assembly Cache)
une redirection 9.2, 10.1 et 10.2 ODP.NET applications pour l'utilisation de la dernière
version installée de ODP.NET: Policy.9.2.Oracle.DataAccess.dll et
Politique.10.1.Oracle.DataAccess.dll
Cela signifie que sur les machines où l'Oracle ODP.NET est installé, la version dans le GAC, il ne faut pas celle que j'ai déployer mon application. Et à cause de la stratégie d'éditeur, cette version peut être plus récente que celle que j'ai déployer mon application. Oracle.DataAccess besoins de l'Oracle (Instantanée) le client a également déployé à ma demande. Ce sont natif Win32 Dll donc ma version sera utilisée.
Est possible que l'Oracle peut mettre à jour l'Oracle.DataAccess à une version plus récente, qui peut ne pas être compatible avec le Client Oracle Instant déployé avec ma demande? Et donc la rupture de mon application dans le futur.
Est-ce un problème? Et puis-je l'éviter? Sans installer/enlever quoi que ce soit sur la machine, puis-je remplacer l'Oracle des Éditeurs de la politique de garantie que j'ai de l'utilisateur de l'Oracle.Dataaccess version que j'ai xcopy déployer mon application?
Pour une version donnée de ODP.NET, Oracle Clients versions prend-il en charge? De nouvelles versions d'Oracle.DataAccess supporter les anciennes versions de l'Oracle (Instantanée) du Client.
Aussi, la dernière version du programme d'installation d'Oracle a maintenant une option à ne pas mettre n'importe quoi dans le GAC a ou à la machine config.
OriginalL'auteur Arve | 2012-02-21
Vous devez vous connecter pour publier un commentaire.
Il est possible de forcer l'application à toujours utiliser l'ODP et ODAC version que vous voulez.
Force ODP version: utiliser le assemblyBinding truc posté par Robert, pour forcer l'utilisation de votre version d'Oracle.DataAccess au lieu de le GAC avais la version. E. g.:
Force ODAC version: ODP DLL dépend d'un ensemble de communes des composants Oracle (client instant, non géré BEC dll). Une manière d'obtenir ces est par l'intermédiaire de l'ODAC paquet. Vous pouvez définir (par application), qui ODAC package que vous souhaitez utiliser. Traditionnellement, cela a été fait par le CHEMIN env variable, mais il peut désormais être défini via config:
Comme une précaution supplémentaire, vous pouvez toujours supprimer le GAC avait éditeur de stratégie de DLL, s'assurer qu'il n'est jamais funky passe.
OriginalL'auteur Martin Suchanek
Vous pouvez utiliser assemblyBinding dans l'application.fichier de configuration.
Heres un couple de liens qui montrent comment l'utiliser.
http://blogs.msdn.com/b/suzcook/archive/2004/05/14/132022.aspx
http://stackoverflow.com/questions/1165190/is-there-a-way-to-force-using-a-dll-version
Je peux l'appliquer. publisherPolicy appliquer="no" pour une assemblée unique à l'intérieur de assemblyBinding/dependentAssembly/
À l'aide de la assemblyBinding truc ne pouvons garantir que vous serez en pointant à la bonne version d'Oracle.DataAccess. Il ne sera pas vous garantir que vous allez pointer à la version correcte de l'ODP dépendances (client instant, dll non gérées). Ce dernier aurait besoin d'être configuré à l'aide de l'oracle.dataaccess.client/DLLPath config choses.
OriginalL'auteur Robert
J'ai combiné Robert & de l'Arve, en réponse à mon précédent efforts :
Ensemble SpecificVersion à True dans le Projet de l'Oracle.DataAccess propriétés, et assurez-vous que la Version indiquée correspond à la version que vous souhaitez utiliser. Sinon, modifiez manuellement le fichier csproj pour changer le numéro de version et supprimer les copié les dll dans le dossier bin. Visual Studio serait de trouver automatiquement le numéro de version dans le GAC. Si la version n'est pas encore exister dans le cas, vous devez installer l'ODAC premier.
<Référence Incluent="Oracle.DataAccess, Version=2.111.7.20, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x 86" />
Assurez-vous que le premier OraOps11w.dll trouvé dans le Chemin d'accès est la version que vous souhaitez utiliser. Sinon, changez de Windows Chemin d'accès au Système, de sorte que le répertoire de l'Oracle Client que vous souhaitez utiliser est la première voie d'entrée.
Il pourrait être préférable de fermer Visual Studio lors de l'édition csproj /web.les fichiers de configuration dans Notepad++ ou votre éditeur de texte favori. Mais généralement, Visual Studio vous demande si vous souhaitez recharger le projet ou pas.
OriginalL'auteur YudhiWidyatama
Pour obtenir de l'Oracle 11 et 12 de jouer bien ensemble j'ai eu à faire les modifications suivantes à mon application.fichier de configuration. C'est le seul changement que j'ai fait, je n'ai pas modifie mon fichier de projet telles que la modification de la version spécifique de false à true.
OriginalL'auteur Stuart Smith