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 :

[WPF] Génération des dlls


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 61
    Par défaut [WPF] Génération des dlls
    Bonjour,

    Je suis confronté à un petit problème que je n'arrive pas à résoudre :

    J'ai une application qui a en référence une dll de contrôle utilisateur (que l'on va appeler dll A) que j'ai créé.
    Cette dll A fait référence à des dlls d'une autre societé (que l'on va appeler dlls B). Donc à coté de ma dll A, lors de la compilation, j'ai dlls B se rajoute à côté car elles sont necessaire. Ce qui est tout à fait normal.
    Le problème c'est que mon application utilise les dlls B mais dans une autre version et ces dlls sont également présente à coté de mon .exe.

    Là est le problème, j'ai mon exe avec ses dlls plus la dll A mais la dll A a rapporter ses dlls B. Du coup je ne peut pas avoir plusieurs fois les mêmes dll dans le même dossier.

    Dans un soucis d'organisation, nous aimerons pouvoir avoir cette architecture :
    / programme.exe
    / dlls B de mon exe
    / UnDossier / dll A
    / UnDossier / dlls B de dll A


    Le problème est que je ne sais pas comment faire pour que mon programme aille chercher la dll A autre par qu'a côté de lui.


    C'est compliqué donc j'espère que vous m'aurez compris.


    Merci d'avance.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    c'est du grand n'importe quoi de vouloir utiliser 2 versions différentes d'une même dll en même temps
    je crois qu'il y a un moyen de charger une dll par code, mais je ne pense pas que ca suffira, car un exe se retrouve dans un domaine d'exécution avec les dll qu'il utilise, donc je ne suis pas sûr que ca ne va pas s'emmeler les pinceaux d'avoir 2x la même dll dans le domaine
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 61
    Par défaut
    Désolé mais c'est mon entreprise qui me le demande, et ce n'est pas du grand n'importe quoi, je t'explique :
    Ce projet va être étalé sur 5-10 ans et des contrôles utilisateurs comme la dll A vont être rajouté peut à peut, on ne pourra pas refaire chaque logiciel (oui car un contrôle utilisateur A est en fait, un petit logiciel) pour qu'ils utilisent la même version, là ce serait du grand n'importe quoi.

    J'ai découvert une autre solution : de ne faire qu'une seule dll en sorti de projet (donc qui contient ses dlls) j'ai découvert ILMerge, j'espère que cela pourra marcher mais ça a l'air compliqué à mettre en place...

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    j'ai failli évoquer ilmerge, mais je ne l'ai pas fait pensant que ca ne marcherait pas, car si l'ancienne et la nouvelle dll ont des classes en commun la clr risque de ne pas savoir laquelle appeler et dans ce cas on a en général un message "nom ambigu"
    je me retrouve parfois avec des problèmes de référence, avec 2 même dll en référence, l'une compilée en debug et l'autre en release et ca plante ...

    par contre rien ne t'empeche de faire une dll pour tes anciens programme et un autre pour les nouveaux

    et ce n'est pas parce qu'un patron pond ca en accord avec une démarche de produit que c'est forcément modélisable et possible
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 64
    Par défaut
    Bonjour,
    Je ne connais pas vos contraintes mais je mettrais simplement les DLL dans le GAC.
    Un kit d'installation pour gérer tout ça et pas de soucis à avoir.
    il faut gérer ses versions de DLL correctement et tout devrait fonctionner.
    Cdlt.

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    dans le GAC avec un numéro de version différente ca doit etre possible oui
    quand on ajoute une dll du framework en référence on peut choisir la version qu'on veut utiliser
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 61
    Par défaut
    Ok merci à vous deux, je vais me renseigner sur ça.

    Je vous tiens au courant.

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Floco Voir le message
    Ce projet va être étalé sur 5-10 ans et des contrôles utilisateurs comme la dll A vont être rajouté peut à peut, on ne pourra pas refaire chaque logiciel (oui car un contrôle utilisateur A est en fait, un petit logiciel) pour qu'ils utilisent la même version, là ce serait du grand n'importe quoi.
    Il n'y a pas forcément besoin de "refaire chaque logiciel"... il peut suffire de le recompiler en référençant la nouvelle version des DLL B (en supposant que celles-ci respectent la compatibilité ascendante).

    Ou même, encore plus simple : dans les propriétés des références aux DLL B, tu mets "Specific Version" à false. Comme ça, ça fonctionnera avec n'importe quelle version des DLL, sans recompilation (avec la même contrainte de compatibilité que ci-dessus)

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 61
    Par défaut
    Le problème est que ces dlls B ne respectent pas beaucoup la compatibilité ascendante (les contrôles Telerik tu connais? ) donc je vais explorer la solution du GAC pour l'instant.
    Mais si vous avez des idées un peut plus simple, je suis preneur.

    Merci

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Floco Voir le message
    Le problème est que ces dlls B ne respectent pas beaucoup la compatibilité ascendante (les contrôles Telerik tu connais? )
    Je connaissais de nom, mais maintenant j'ai plus envie de mieux connaître

Discussions similaires

  1. La génération des DLL
    Par nnizarr2010 dans le forum C++
    Réponses: 0
    Dernier message: 27/05/2008, 15h13
  2. [COMPILER] Génération des fichiers dll
    Par ebutterfly dans le forum MATLAB
    Réponses: 3
    Dernier message: 16/01/2008, 00h39
  3. Appel à des fonctions incluses dans des DLL
    Par Greybird dans le forum Langage
    Réponses: 3
    Dernier message: 26/05/2003, 13h33
  4. Réponses: 27
    Dernier message: 03/02/2003, 12h27
  5. [] [Install] Problème de mise à jour des dll
    Par pepper dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 23/01/2003, 22h34

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