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 :

Modification Emplacement DLL


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 72
    Par défaut Modification Emplacement DLL
    Bonjour à toutes et à tous,

    voici mon "soucis"...

    J'ai développé d'une part une appli console et d'autre part une appli winforms en dotnet.

    J'ai créé des projet de déploiement et tout se passe bien.

    J'ai simplement quelque chose qui me chiffonne:
    lors de ces 2 installations, toutes les dll utiles sont copiée au même niveau que le .exe... et je ne trouve pas ça très propre...

    Y a-t-il moyen de les mettre ailleurs (genre dans un dossier assembly par exemple) et ce, sans passer par le GAC?

    Merci d'avance pour vos réponses

  2. #2
    Membre émérite Avatar de ppphil
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    617
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2007
    Messages : 617
    Par défaut
    Dans la configuration du setup, tu peux définir des dossiers cible comme bon te semble me semble-t-il...

  3. #3
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Oui oui on peux, mais il se pose un autre problème.
    Si les DLLs ne sont ni dans le répertoire de l'exécutable ni dans le GAC, l'exécutable ne les trouvera pas pour les charger.
    La solution :

    Dans la fonction qui te sert de point d'entré, la première chose à faire est de poser un handler sur l'évènement AssemblyResolve de l'AppDomain. Ainsi quand ton AppDomain chercher à charger une référence et qu'il ne l'a trouve pas, tu peux la charger "a la main". Ça te permet donc d'aller chercher dans le bon chemin.
    Code csharp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    class Program
    {
        public static int Main(string[] args)
        {
            AppDomain.CurrentDomain.AssemblyResolve +=new ResolveEventHandler(CurrentDomain_AssemblyResolve);
            // ......
            Application.Run(new Form1());
            return 0;
        }
     
        private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
        {
            // Utiliser System.Reflection.Assembly.LoadFile() pour charger l'assembly souhaitée et retourner cet assembly.
        }
    }

Discussions similaires

  1. Modification de dll
    Par topolino dans le forum ASP.NET
    Réponses: 2
    Dernier message: 01/07/2010, 10h55
  2. apercu et modification fichier dll
    Par jerem488 dans le forum Windows XP
    Réponses: 1
    Dernier message: 28/01/2007, 18h29
  3. Réponses: 7
    Dernier message: 25/07/2006, 16h18
  4. lier un .exe à des dll dans un autre emplacement
    Par Husqvarna dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 19/04/2006, 10h53
  5. Modification d'une dll
    Par MAtt-95555 dans le forum x86 32-bits / 64-bits
    Réponses: 2
    Dernier message: 13/12/2005, 12h40

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