Comment déployer une application .NET qui utilise ODAC sans installer l’intégralité du composant sur l’utilisateur?

J’ai écrit une application C # qui se connecte à une firebase database Oracle 10g. En utilisant Oracle Data Access Component 11.2 “ODAC”, cela fonctionne parfaitement sur ma machine.

Et maintenant je veux déployer l’application et l’installer dans une autre “machine propre” qui a uniquement le framework .NET Et je ne veux pas installer l’ensemble du composant ODAC sur l’utilisateur!

Comment pourrais-je faire ça? J’ai essayé d’inclure tous les fichiers DLL nécessaires dans mon dossier bin, par exemple:

  • oci.dll
  • ociw32.dll
  • Oracle.DataAccess.dll
  • orannzsbb11.dll
  • oraocci11.dll
  • oraociicus11.dll
  • OraOps11w.dll
  • msvcr71.dll

Mais ça n’a toujours pas marché. Que dois-je faire pour résoudre ce problème?

    Je ne sais pas si votre préoccupation est de devoir installer le client Oracle en plus de l’installation ODAC d’environ 50 Mo ou uniquement de l’ODAC autonome.

    Si le problème concerne l’installation du client Oracle et de l’ODAC, vous pouvez utiliser Oracle Instant Client ? C’est la plus petite méthode d’empreinte pour installer le client Oracle. Vous aurez également besoin du supplément ODAC xcopy.

    Si votre préoccupation concerne uniquement l’installation d’ODAC, je ne pense pas qu’il y ait une empreinte plus petite disponible.

    Vous n’avez pas besoin d’installer un client Oracle séparément. J’ai installé le suivant dans le même répertoire que le fichier .exe:

    Oracle.DataAccess.dll oci.dll OraOps11w.dll oraociei11.dll msvcr71.dll 

    Assurez-vous que votre projet référence le même Oracle.DataAccess.dll que vous livrez. Cela a fonctionné sur un nouveau PC sur lequel aucun client Oracle n’a été installé.

    J’ai évité d’utiliser TNSNAMES.ora en spécifiant une chaîne de connexion comme celle-ci.

    connectionssortingng = Source de données = “(DESCRIPTION = (ADRESSE = (PROTOCOL = TCP) (HOST =) (PORT =))” + “(CONNECT_DATA = (SERVEUR = DÉDIÉ) (SERVICE_NAME =)))”

    Si vous utilisez TNSNAMES.ora, il vous suffit de couper et de coller les détails de la connexion dans une chaîne unique.

    voir Quelle est l’empreinte client minimale requirejse pour connecter C # à une firebase database Oracle?

    pour plus d’informations.

    • ejm

    Pour plus d’informations sur l’obtention des dll ci-dessus, consultez ce didacticiel: http://begeeben.wordpress.com/2012/08/01/accessing-oracle-database-without-installing-oracle-client/

    Depuis que cette question a été postée, le client géré Oracle est maintenant disponible (fourni par Oracle). Je l’utilise sans problèmes. Ne nécessite pas la recherche de DLL ou de configuration spéciale. Ajoutez simplement le paquet, modifiez le fichier de configuration et vous êtes prêt. NuGet Link et un article d’Oracle à ce sujet.

    Étant donné que ce client est entièrement écrit en code .NET Managed, il est indépendant de l’architecture et ne nécessite ni DLL externe, ni installation d’un client Oracle, ni rien de ce genre.

    Vous pouvez l’installer dans VS à l’aide du gestionnaire de packages.

     Install-Package Oracle.ManagedDataAccess 

    Je me suis mis à mettre cela dans le fichier machine.config (bien que cela fonctionne aussi dans web.config ou app.config). J’ai constaté que cela permettait d’éviter les conflits avec d’autres pilotes pouvant être installés:

              

    Ensuite, pour votre chaîne de connexion:

       
    • IPORNAMEOFHOST = Ceci est l’adresse IP ou le nom DNS de votre serveur.
    • PORTNUM = Ceci est le numéro de port qu’Oracle écoute. Typiquement 1521.
    • ORACLESID = Le SID de la firebase database à laquelle vous essayez de vous connecter.
    • ORACLEUSER = Le nom d’utilisateur à utiliser pour la connexion.
    • ORACLEPASSWORD = Le mot de passe à utiliser pour la connexion.