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 :

Génération de DLL au runtime sans le code source


Sujet :

C#

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Points : 20
    Points
    20
    Par défaut Génération de DLL au runtime sans le code source
    Bonjour,

    Je cherche actuellement à générer une DLL dynamiquement qui contiendra une classe héritant de UserCOntrol ainsi qu'un fichier XML.

    Après de multiple recherche sur internet, j'ai trouvé CodeDOM qui permet de générer du code et de le compiler. J'ai trouvé comment embarquer des ressource dans ma DLL avec CodeDom.
    Par contre je ne vois pas comment inclure une classe dans ma DLL à partir d'une classe qui existe déjà...

    En faite je charge une DLL dans mon application qui contient un UserControl pour l'affichage et un fichier XML pour les datas à afficher dans ce UserControl. Maintenant je souhaiterais regénérer une nouvelle DLL qui contiendrait toujours mon UserControl mais cette fois-ci mon fichier XML avec les valeurs modifiées.

    Apparement CodeDOM est prévu pour générer (on peut dire compiler ...) une application ou une DLL à partir de code (C#, C++ ou VB) et donc pas à partir de quelque chose déjà compilé (IL) si j'ai bien compris.

    Il ne me semble pas que ce que je cherche à faire soit possible. Pouvez vous me confirmer ou bien me donner une tout autre méthode s'il vous plait ?

    Merci,

    Guillaume.

    Merci d'avance.

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    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 154
    Points : 25 072
    Points
    25 072
    Par défaut
    si tu as de l'il dispo il y a des classes qui servent à compiler de l'IL (mais pas codedom qui sert à compiler du .net en IL)

    m'enfin avec codedom le but n'est pas forcément de charger la dll compilée mais de l'utiliser par reflection
    avec codedom tu obtiens une référence vers l'assembly, donc par réflection tu peux obtenir un pointeur vers une classe qui est dedans et l'instancier via CreateInstance ou Invoke
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    Je me sers déjà de codedom pour ça (trouver mon UserControl et l'instancier).

    Mais maintenant je voudrais être capable en gros de conserver ma DLL en l'état (ou tout du moins de la copier) en modifiant un fichier ressource XML qu'elle embarque.
    Je pensais donc recompiler une nouvelle DLL avec mon ancien UserControl et mon nouveau fichier XML. Hors comme tu le dis, il n'est pas possible de compiler du IL avec codedom.

    Connais tu une de ces classes qui peuvent me permettre de compiler de l'IL dans une DLL en y embarquant un fichier ressource au format XML ? Car je n'ai pas trouvé autre chose que codedom permettant de compiler une DLL en y embarquant une ressource ...

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    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 154
    Points : 25 072
    Points
    25 072
    Par défaut
    system.reflection.emit.* peut etre


    m'enfin je comprends pas trop pourquoi tu veux compiler un usercontrol avec de l'xml dedans ... un usercontrol normalement c'est un pattern qui s'occupe de mettre en page les données qu'on lui donne
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    C'est un peu compliqué en faite ..

    L'application que je suis en train de développer sert à configurer des contrôleurs répartis dans un bâtiment et servant à automatiser celui-ci. Les différents contrôleurs sont reliés par un réseau informatique dédié à leur gestion et à leur communication.Les configurations possibles sont différentes entre chaque type de contrôleurs.
    Chacune de mes DLL représente donc un type de produit. Le UserControl représente son affichage spécifique suivant les configurations que l'on peut y faire et le fichier XML contient ensuite les valeurs par défaut et actuelles de chacune de ces configurations.
    Je parse ensuite mon fichier XML afin de disposer des ces valeurs dans mon application et de les lier à mon UserControl (Vue) à l'aide de binding. Le but est de respecter le pattern MVVM.

    je ne sais pas si mes explications sont claires ou pas ...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Points : 20
    Points
    20
    Par défaut
    Après pas mal de recherche sur system.reflection.emit.*, j'en arrive à la même conclusion que pour CodeDom : impossible d'ajouter une classe d'un type que je possède dans une autre DLL...

    Quelqu'un aurait il une idée ?

Discussions similaires

  1. Mise à jour application sans les codes sources
    Par -leternel- dans le forum Droit
    Réponses: 0
    Dernier message: 26/09/2013, 16h20
  2. comment compiler un binary file sans le code source (android)
    Par sup.wado dans le forum Applications et environnements graphiques
    Réponses: 7
    Dernier message: 21/04/2011, 19h36
  3. Génération d'une version sans le code source ?
    Par eric0606 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 17/01/2008, 14h56
  4. rendre une classe serializable sans les codes sources
    Par LittleBean dans le forum Langage
    Réponses: 2
    Dernier message: 19/04/2007, 10h47
  5. Modifier des labels sans le code source
    Par Popof dans le forum WinDev
    Réponses: 2
    Dernier message: 12/07/2006, 11h21

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