2017-01-19 3 views
0

Travaillant dans Visual Studio 2015, j'ai une application VB que je dois déployer sur plusieurs clients. L'application fonctionne correctement tant que je suis en train de déployer sur une machine avec exactement la même version de Oracle.DataAccess.dll avec laquelle elle a été développée. Mais les machines que j'ai besoin de déployer pour avoir différentes versions du client Oracle. Est-il possible de faire fonctionner l'application pour différentes versions du client Oracle?Comment puis-je déployer une application VB.NET qui fonctionnera sur plusieurs clients Oracle?

+0

Votre application va avoir une dépendance étroite sur Oracle Client et ODP.NET et vous devrez donc regrouper ODP.NET avec votre application pour vous assurer qu'elle a ce dont elle a besoin. Vous ne pouvez pas compter sur ce qui se trouve sur la machine cible. Voir la discussion ci-dessous qui se résume à l'utilisation de la version ODAC xcopy pour ODP.NET non géré, ou Nuget pour ODP.NET géré. –

Répondre

0

La réponse est d'utiliser une connexion Oracle sans client. Reportez-vous à ce . Ou que diriez-vous sans client nuget packageOracle.ManagedDataAccess?

le problème avec oracle est qu'un client spécifique ne fonctionnerait pas avec Oracle.Dataaccess.dll qui a une version différente. Parfois, la version peut être juste un peu différente, comme le client 1.2.0.206 et cela ne fonctionnerait pas avec 1.2.0.212.

Vous pouvez également essayer de ne pas distribuer la DLL parce que, je crois que le client Oracle installe le dossier odp.net où il y a DLL qui correspond à ce client et il est enregistré dans GAC. Mais le problème peut être que dll vous utilisé pour dev est de version supérieure. Vous pouvez essayer de modifier app.config pour définir la plage de version pour cette DLL. Read about redirecting assembly version. Mais après tout, le mieux est de déployer votre application en tant qu'unité atomique avec une connectivité Oracle sans client. Même si vous utilisez la redirection de version avec succès, les fonctionnalités d'une DLL peuvent différer d'une autre et vos résultats peuvent ne pas correspondre à votre environnement de développement.

+0

@TS: C'est un très vieux article. Ces jours-ci, la version ODP.NET "xcopy" a une option (machine_wide_configuration = false) pour ne pas utiliser le GAC ou modifier le registre. Il est préférable d'utiliser ce moyen d'installation que de simplement copier aveuglément des DLL. Voir \t ODAC121024Xcopy_32bit.zip situé ici: http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-087491.html –

+0

@ChristianShay Je suis d'accord. En fait, il existe un paquet nuget 'Oracle.ManagedDataAccess' qui fait tout ce dont vous avez besoin. Donc, c'est la fin de l'histoire. Comment l'installation sans client fonctionne actuellement est une question différente. J'ai ajouté l'information de paquet pour répondre à –

+0

Relisant la question originale, il semble vouloir utiliser n'importe quelle version du client d'Oracle avec son application, qui est un non-démarreur parce qu'il y a des dépendances serrées. –