IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Faire un exe autonome sans DLL


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2002
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 41
    Points : 31
    Points
    31
    Par défaut Faire un exe autonome sans DLL
    Bonjour,
    mon titre n'est peut-être pas très clair !

    Je compile donc une appli VB.Net ou j'utilise entre autre la référence ADO (2.8).

    Quand je récupère l'exe seul de bin/release et que je le mets par exemple dans C:\ , il ne fonctionne pas. Normal, il veut la DLL Interop.ADODB qui est dans le même répertoire bin/release.
    Mais je ne comprends pas pourquoi il copie la DLL Interop.ADODB dans bin/release puisque je vais la chercher sur le même poste et qu'elle est référencée dans VB.Net (et sinon je ne pourrais pas aller la chercher !).

    Dans les proporités du projet, il y a bien une option "Copie locale" = true/false mais de toutes façons si je met à false ça ne compile plus. Et évidemment si je mets à true, il faut l'embarquer à l'exe.
    De plus, la DLL est copiée en local au moment du "add reference"

    bref, comment faire pour qu'il aille référencer la DLL installée sous Windows ?

    Merci.
    Sergio

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    la dll est elle forcément quelquepart quand tu deploieras ton projet ?

    l'utilité du framework c'est d'essayer d'utiliser que des objets du framework pour éviter ce genre de problemes
    ado.net t'allait pas ?

    il y a une option j'crois dans les propriétés du projet pour dire des dossiers ou chercher les dll si elles ne sont pas trouvés à coté de l'exe

  3. #3
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    je ne pense pas que "Interop.ADODB" soit disponible par défaut sur Windows
    d'après ce que j'ai compris tu as référencé un objet COM. Or il s'agit d'une lib native et il faut que tu l'utilise à partir de ton programme managé. Visual Studio génère donc une dll "Interop" qui sera le pond entre la lib COM et ton appli. Cette lib éttant générée, elle doit être embarquée car elle n'existe pas par défaut sur l'OS de destination. De plus, en soit cette dll "Interop" ne contient aucune fonction/commande d'ADO car elle ne sert que de passerelle, la dll originale devant tout de même être enregistrée dans COM ( et là, peut être qu'elle est par défaut dans Windows ... )

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2002
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Merci pour les réponses. smiley, je pense que c'est ce que tu dis.
    Et j'ai eu qqs infos supplémentaires :

    Pour être plus clair, je vais redécrire ce que j'ai fait :

    - Pour utiliser ADODB, je fais "add reference" sur ADO 2.8 et je vais donc chercher le fichier suivant :
    "C:\Program Files\Common Files\System\ado\msado15.dll"
    - sans rien me demander, il me copie en local dans "Debug" et "Release" un fichier "Interop.ADODB.dll"
    Si ensuite je met "copie local = false" pour cette référence ADO 2.8, il me fait une erreur d'assembly me disant que , à priori, ma DLL d'origine (masado15.dll) devrait être "strong signed". Tout est pourtant du Microsoft "genuine" !

    Je vais donc embarquer les DLL avec l'exe mais ça reste bien compliqué : à la base il y a tout ce qu'il faut sur le poste (la DLL ADO 2.8, le framework .net 2.0) mais ça ne suffit pas, il faut quand même qu'il ponde des DLLs intermédiaires ...

  5. #5
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par sergio_bzh
    Je vais donc embarquer les DLL avec l'exe mais ça reste bien compliqué : à la base il y a tout ce qu'il faut sur le poste (la DLL ADO 2.8, le framework .net 2.0) mais ça ne suffit pas, il faut quand même qu'il ponde des DLLs intermédiaires ...
    Tu aurai préféré avoir à coder toi même un wrapper COM -> .NET ?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2002
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 41
    Points : 31
    Points
    31
    Par défaut
    Tu aurai préféré avoir à coder toi même un wrapper COM -> .NET ?
    ben c'est du code repris de VB6 et en VB6 .... je livrais un fichier exe c'est tout

Discussions similaires

  1. EXE sans DLL
    Par Crashnix dans le forum Qt Creator
    Réponses: 1
    Dernier message: 05/01/2015, 23h15
  2. Réponses: 4
    Dernier message: 10/09/2007, 19h10
  3. [debutant] Quel EDI choisir pour faire des exe autonomes sous Windows ?
    Par damned3 dans le forum Choisir un environnement de développement
    Réponses: 10
    Dernier message: 06/11/2006, 14h00
  4. Réponses: 19
    Dernier message: 28/01/2005, 09h52
  5. [TP]Faire un .exe sous TPascal 7 ?
    Par Mad_Michou dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 06/11/2004, 12h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo