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

Framework .NET Discussion :

[C#] Comment ajouter des references "dynamiques" / en chemin relatif?


Sujet :

Framework .NET

  1. #1
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2003
    Messages : 271
    Points : 720
    Points
    720
    Par défaut [C#] Comment ajouter des references "dynamiques" / en chemin relatif?
    Lorsqu'on défini des références à d'autres bibiothèques, elles sont par défaut copiées dans le meme rep que l'application (copy local = true) ou appartiennent au GAC.

    Il suffit ensuite de les utiliser ds le code avec using namespace;

    Cependant, j'aimerais ne PAS les copier en local, mais specifier un chemin relatif, un peu un équivalent à un #include "mylib.dll" en C.

    Comment faire ceci en C#?

    Idéalement, j'aimerais même pouvoir définir personaliser le répertoire ds lequel chercher mes DLL, par ex avec un chemin defini dans le app.config.

    en gros, j'ai une app A qui utilise un plugin B qui referencie une DLL C. Lorsque je démarre B, avant le code utilisant C, j'aimerais pouvoir lui dire où chercher C.

    Comme la référence à C est inscrite dans le manifest de B (un petit coup de IS Disasembler suffit), je vois pas trop comment je peut faire...

    Déjà, si j'avais la possiblité de coder "en dur" le chemin de C dans B, ce serait pas mal.

    Vous allez me dire: mais pourquoi diable as tu besoin de ceci? Tout simplement parce que A vérifie toutes les DLL dans le rep de B, et C ne lui plait pas (peut etre parce que A et B sont en .NET 2.0 alors que C est en 1.1), donc j'ai besoin de définir C en dehors.

    A part ce problème de déploiement, je sais déjà que B+C fonctionnent bien ensemble (test avec une programme standalone indépendant de A).

    Avez vous des idées?

    NB: mettre C ds le GAC n'est pas une option envisageable.

    EDIT: sous VS2005, ds les propritétés d'un project, on peut spécifier des "Reference Paths". Est ce accessible et modifiable ds le code?
    http://msdn2.microsoft.com/en-us/lib...7c(VS.80).aspx
    Cela semble interessant, mais cela ne marche pas!
    Si je supprime mes DLL du rep local, mon programme ne les trouve pas alors qu'elles sont bien ds les ReferencePaths...

  2. #2
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2003
    Messages : 271
    Points : 720
    Points
    720
    Par défaut
    Personne n'a une idée?

    En attendant, j'ai trouvé un workarround pour le déploiement de mon plugin B avec l'outil ILMerge de MS: il s'agit alors de créer une "super" DLL qui contient B et C. Cela fonctionne plutot bien puisque désormais, mon programme A ne bronche plus et mon plugin fonctionne!

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2003
    Messages : 271
    Points : 720
    Points
    720
    Par défaut
    à part mon workarround, qqn a une idée?

  4. #4
    Rédacteur
    Avatar de abelman
    Inscrit en
    Février 2003
    Messages
    1 106
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 1 106
    Points : 2 629
    Points
    2 629
    Par défaut
    Bonjour,

    Vous pouvez aussi mettre la DLL C dans le GAC (Global Assembly Cache)
    Comme ça, il n'y a pas besoin de préciser son répertoire.

Discussions similaires

  1. [lablgtk2] comment ajouter des widget dynamiquement?
    Par amiroushka dans le forum Caml
    Réponses: 4
    Dernier message: 06/11/2009, 21h21
  2. Réponses: 1
    Dernier message: 19/08/2006, 19h40

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