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

C# Discussion :

Eviter les DLL externes


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    468
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 468
    Par défaut Eviter les DLL externes
    Bonjour

    Pour les besoins d'une petite procédure d'installation je crée un lien dans Windows.

    Pour créer des liens, il faut une référence COM sur 'Windows Script Host' comme ça après on peut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    WSH.WshShell shell = new WSH.WshShell();
    WSH.IWshShortcut link = (WSH.IWshShortcut)shell.CreateShortcut("lien.lnk");
    link.TargetPath = "executable.exe";
    link.Save();
    Évidemment pour fonctionner une DLL d'interopérabilité est créée : 'Interop.IWshRuntimeLibrary.dll'.

    Seulement voila maintenant pour fonctionner, mon programme d'installation à besoin d'une DLL externe. Je perds donc tout l'intérêt de l'installation s'il faut soi-même installer manuellement une DLL !!!

    Et la solution de ZIPPER mon programme avec ses DLL ne me convient pas. Car c'est vraiment alourdir une procédure d'installation pour une personne ayant des connaissances limités en info.

    Et puis il doit bien avoir une méthode pour intégrer directement une DLL à l'exécutable !? Non !?

    Cependant cette méthode ne me saut pas aux yeux ni sur Google !

  2. #2
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Bonjour.

    Regarde du coté de Cecil afin d'intégrer le code de la lib dans ton exe. A part ça je voit pas ce qui pourrait le faire.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    468
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 468
    Par défaut
    Citation Envoyé par dev01 Voir le message
    Regarde du coté de Cecil afin d'intégrer le code de la lib dans ton exe. A part ça je voit pas ce qui pourrait le faire.
    Mono.Cecil !? Il n'y a pas grand chose là dessus sur le Net. Et puis mettre en place une machine à gaz pour une chose... si évident !

    Par exemple, quand on veut intégrérer des images dans l'executable car c'est mieux que de les laisser trainer... Il suffit pour cela de créer des ressources.

    Mais pour une Dll... Pourquoi n'y a t'il rien pour nous simplifier la vie. Si les ressources internes existent c'est bien qu'il y a une utilité !?

    Je vois donc qu'une solution pour la Dll : la mettre en ressource puis faire des appels par Reflexion.

    Je ne peux donc pas garder mon code comme il était écrit avec une Dll externe. Puisqu'avec des appels dynamiques on doit faire "myMethod.Invoke(obj,truc)" au lieu de "obj.Method(truc)".

    Il y a surement quelque chose qui m'echappe car je ne comprend pas pourquoi Microsoft n'aurait rien prévu pour ça.

  4. #4
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Citation Envoyé par ijk-ref Voir le message
    Mono.Cecil !? Il n'y a pas grand chose là dessus sur le Net. Et puis mettre en place une machine à gaz pour une chose... si évident !
    Si evident pour toi, mais absolument aucune utilité pour 99 % des développeurs ...
    Et puis excuse moi mais Mono.Cecil est très très loin d'être une usine à gaz comme tu le dit. Tu as juste un petit outil à écrire qui injecterais ta lib dans ton exe rien d'autre.

    Citation Envoyé par ijk-ref Voir le message
    Par exemple, quand on veut intégrer des images dans l'exécutable car c'est mieux que de les laisser trainer... Il suffit pour cela de créer des ressources.

    Mais pour une Dll... Pourquoi n'y a t'il rien pour nous simplifier la vie. Si les ressources internes existent c'est bien qu'il y a une utilité !?
    L'utilité est bien pour tout ce qui media mais une lib "doit" être externe pour la réutilisabilité, la gestion des version, l'enregistrement dans le GAC, etc, etc, ...

    Citation Envoyé par ijk-ref Voir le message
    Je vois donc qu'une solution pour la Dll : la mettre en ressource puis faire des appels par Reflexion.

    Je ne peux donc pas garder mon code comme il était écrit avec une Dll externe. Puisqu'avec des appels dynamiques on doit faire "myMethod.Invoke(obj,truc)" au lieu de "obj.Method(truc)".
    Donc tu as ta solution mais elle te plait pas :-(

    Citation Envoyé par ijk-ref Voir le message
    Il y a surement quelque chose qui m'echappe car je ne comprend pas pourquoi Microsoft n'aurait rien prévu pour ça.
    parce qu'il n'y a aucune utilité à part des cas très très particulier ...

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    468
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 468
    Par défaut
    Citation Envoyé par dev01 Voir le message
    parce qu'il n'y a aucune utilité à part des cas très très particulier ...
    Il est fort probable que tu es plus raison que moi N'empêche que je suis pas le 1er à mettre posé la question ("intégrer un Dll") vu le grand nombre de fois où je l'ai trouvé sur Google (sans réponses)

    Tu veux dire qu'il est impossible de faire un simple programme d'installation en .NET (qui par définition ne doit pas avoir de lib externe) qui créer un lien (Shortcut) sur le Bureau sans utiliser la Refexion !?

    Autrement je n'oublie pas de te remercier pour ta patience et la précision de tes réponses et j'espère que tu prends pas mes paroles pour arrogantes c'est juste ma façon de m'exprimer et de poser mes questions. Merci encore

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Salut,

    je ne travaille pas souvent avec Com, donc ce qui suit est hautement hypothetique.

    Pour fusionner deux assembly (la dll d'interop en est un non ?), il existe un outil de Microsoft qui fait le job : ILMerge. Ou meme en bidouillant son script de build à la main, pour créer un assembly mutli-module (Visual ne supportant pas ce genre de build à la base) .

  7. #7
    Rédacteur
    Avatar de dev01
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 451
    Par défaut
    Citation Envoyé par ijk-ref Voir le message
    Tu veux dire qu'il est impossible de faire un simple programme d'installation en .NET (qui par définition ne doit pas avoir de lib externe) qui créer un lien (Shortcut) sur le Bureau sans utiliser la Refexion !?
    Je veux surtout dire qu'un programme d'installation s'il doit être autonome alors il ne faut pas qu'il soit dépendant du Fx .NET. Or à partir du moment ou tu développes en .NET tu as besoin du Fx .NET pour exécuter tes applications.

    Citation Envoyé par ijk-ref Voir le message
    et j'espère que tu prends pas mes paroles pour arrogantes c'est juste ma façon de m'exprimer et de poser mes questions. Merci encore
    Absolument pas. y a aucun problème d'aucune sorte.Désolé si jamais mes réponses ont put d'amener à croire cela.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 25/10/2016, 09h25
  2. Eviter les jointures externes
    Par aloha dans le forum JPA
    Réponses: 5
    Dernier message: 27/02/2009, 17h48
  3. Visual et liens avec les DLL externes
    Par stof dans le forum Visual C++
    Réponses: 7
    Dernier message: 04/02/2008, 12h11
  4. [C#] Comment eviter les boucles infinies ?
    Par Thomas Lebrun dans le forum C#
    Réponses: 12
    Dernier message: 09/06/2004, 00h04
  5. Dialogue DLL externe
    Par rgarnier dans le forum XMLRAD
    Réponses: 8
    Dernier message: 07/05/2003, 14h28

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