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 :

Problème de chargement d'assembly


Sujet :

Framework .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de despeludo
    Inscrit en
    Janvier 2004
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 121
    Par défaut Problème de chargement d'assembly
    Bonjour à tous !

    Je suis en train de développer un petit programme permettant d'analyser des assemblies .net. Le programme en question se trouve dans un répertoire contenu dans le PATH windows de sorte qu'il puisse être appelé facilement en mode DOS/script....

    D'un autre côté j'a un répertoire contenant une assembly à analyser ainsi que l'ensemble des assemblies dont il dépend.

    Le problème survient lorsque mon programme cherche à charger une assembly (via la méthode Assembly.Load ou Assembly.LoadFrom). Le système ne semble pas trouver les assemblies dont dépend l'assembly principale.

    En revanche, lorsque je copie mon programme dans le répertoire des assemblies à analyser, le problème disparaît. A mon avis il doit y avoir un problème de contexte d'exécution que je ne sait pas trop comment résoudre.

    Pour information, la syntaxe de la ligne de commande de mon programme est la suivante :

    MonProg.exe NomDelAssembly (sans le .dll).

    Merci pour vos réponses.

  2. #2
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Peux-tu mettre l'erreur remontée ?
    NomDelAssembly, c'est uniquement le nom de l'assembly ou le chemin complet ? Si tu ne fournis à Assembly.LoadFrom() que le nom du fichier, le chargement ne pourra se faire qu'à certaines conditions.

  3. #3
    Membre confirmé Avatar de despeludo
    Inscrit en
    Janvier 2004
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 121
    Par défaut
    En fait j'ai trouvé une solution qui consiste à traiter les erreurs de résolution de noms d'assembly.

    D'après ce que j'ai compris le schéma de traitement est le suivant :

    1) Chargement de l'assembly mère (trouvée par le système puisqu'on lui passe le chemin complet)
    2) Tentative de chargement des assemblies dont dépend l'assembly mère ; les chemins de recherche par défaut sont le GAC et le répertoire d'exécution de mon programme dont pas le répertoire dans lequel se trouve l'assembly mère.

    La solution consiste donc à surcharger l'événement Assembly.ModuleResolve qui à partir du nom de l'assembly à charger nous permet de faire un :
    Assembly.LoadFrom(Directory.GetCurrentDirectory() + "\\" + assemblyName + ".dll");

    et le tour est joué


    A noter que GetCurrentDirectory nous revoie le répertoire dans lequel est exécuté notre programme et non pas celui où il se trouve, ce qui nous arrange bien.

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

Discussions similaires

  1. Problème de chargement d'assembly en mode design VS 2008
    Par Ornitho76 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 07/02/2010, 22h05
  2. [OC][ASE]Problème de chargement de pilote ODBC
    Par Joce dans le forum Sybase
    Réponses: 10
    Dernier message: 06/01/2006, 09h08
  3. [SQL*Loader] Problème de chargement de nombres
    Par sebduth dans le forum Oracle
    Réponses: 10
    Dernier message: 18/11/2005, 10h07
  4. [FLASH 8] Problème de chargement de swf
    Par memess dans le forum Flash
    Réponses: 3
    Dernier message: 17/11/2005, 09h41
  5. Problème de chargement de police de caractères
    Par Laurent Gomila dans le forum Windows
    Réponses: 4
    Dernier message: 19/08/2004, 16h11

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