J'ai écrit une application C # qui se connecte à une base de données Oracle 10g. Utilisant Oracle Data Access Component 11.2 "ODAC", il fonctionne parfaitement sur ma machine.
Et maintenant, je veux déployer l'application et l'installer dans une autre "machine propre" qui a le .NET Framework uniquement! Et je ne veux pas installer le composant ODAC entier à l'utilisateur!
Comment pourrais-je faire ça? J'ai essayé d'inclure tous les fichiers DLL DLL nécessaires dans mon dossier bin, comme:
Mais cela n'a toujours pas fonctionné. Que dois-je faire pour résoudre ce problème?
Je ne sais pas si votre souci est d'avoir à installer le client Oracle en plus de l'installation ODAC ~ 50 Mo ou simplement l'ODAC autonome.
Si le problème concerne l'installation du client Oracle et de l'ODAC, vous pouvez utiliser le Oracle Instant Client ? Il s'agit de la plus petite méthode d'encombrement pour l'installation du client Oracle. Vous aurez également besoin du supplément ODAC xcopy.
Si votre problème concerne uniquement l'installation ODAC, je ne pense pas qu'il existe une plus petite empreinte disponible.
Vous n'avez pas besoin d'installer un client Oracle séparément. J'ai installé ce qui suit dans le même répertoire que le .exe:
Oracle.DataAccess.dll
oci.dll
OraOps11w.dll
oraociei11.dll
msvcr71.dll
Assurez-vous que votre projet fait référence au même Oracle.DataAccess.dll que vous fournissez. Cela a fonctionné sur un nouveau PC qui n'avait jamais installé de clients Oracle.
J'ai évité d'utiliser TNSNAMES.ora en spécifiant une chaîne de connexion comme celle-ci
connectionstring = Data Source = "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (Host =) (PORT =))" + "(CONNECT_DATA = (SERVER = DEDICATED) (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 de ligne unique.
voir Quelle est l'encombrement client minimum requis pour connecter C # à une base de données Oracle?
pour plus d'informations.
Pour plus d'informations sur la façon d'obtenir les 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é publiée, Oracle Managed Client est désormais disponible (fourni par Oracle). Je l'utilise sans aucun problème. Ne nécessite pas de recherche de DLL ou de configuration spéciale. Ajoutez simplement le package, modifiez le fichier de configuration et vous êtes prêt. NuGet Link et n article par Oracle à ce sujet ..
Étant donné que ce client est entièrement écrit en code managé .NET, il est indépendant de l'architecture et il n'est pas nécessaire de disposer de DLL externes, d'installer un client Oracle ou quelque chose du genre.
Vous pouvez l'installer dans VS à l'aide de Package Manager.
Install-Package Oracle.ManagedDataAccess
J'ai pris l'habitude de mettre cela dans le fichier machine.config (bien que cela fonctionne également dans web.config ou app.config). J'ai trouvé que cela aide à éviter les conflits avec d'autres pilotes qui peuvent être installés:
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.DataAccess.Client" />
<remove invariant="Oracle.ManagedDataAccess.Client" />
<add name="ODP.NET, Managed Driver"
invariant="Oracle.ManagedDataAccess.Client"
description="Oracle Data Provider for .NET, Managed Driver"
type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</DbProviderFactories>
</system.data>
<configuration>
Ensuite, pour votre chaîne de connexion:
<add name="MyConnectionString" connectionString="Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=IPORNAMEOFHOST)(PORT=PORTNUM)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORACLESID)));User Id=ORACLEUSER;Password=ORACLEPASSWORD;" providerName="Oracle.ManagedDataAccess.Client"/>