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 :

Référence et Path


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 22
    Par défaut Référence et Path
    Bonjour,

    J'ai un projet constitué de plusieurs références dont les dll se trouvent dans un répertoire spécifique (Debug\System du projet courant).
    L'ensemble fonctionne correctement mais lors de l'exécution ces dlls sont copiées à la racine de l'exécutable (Debug) ce que je ne souhaite pas!
    J'imagine qu'il est possible de paramétrer ce comportement. Comment faire?

    Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Par défaut
    Tu fais un clic droit sur la DLL dans l'explorateur de projets, puis Propriétés, et tu mets la propriété Copy Local à False

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 22
    Par défaut
    Ok merci bien pour cette réponse.
    Cependant, si je passe l'option à false, mon service ne se lance plus...
    Il semble qu'il n'arrive plus linker les dll alors que la compilation passe sans pb!
    Une idée?

    Voici l'erreur levée sur une de mes références.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Impossible de charger le fichier ou l'assembly 'ACLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ou une de ses dépendances. Le fichier spécifié est introuvable.

  4. #4
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Donc si j'ai bien compris, tu as une application qui utilise une dll mais tu ne veux pas que la dll soit dans le dossier de l'application ?! il n'y a pas 36 solutions, il faut bien que l'application puisse trouver la dll.
    - Soit tu la charge de manière dynamique (Assembly.Load)
    - Soit tu enregistre la dll et toutes ses dépendances dans le GAC (déjà traité sur le forum)
    - Soit tu utilises un outil tel que ILMerge (cherche sur google) afin d'inclure toutes tes dlls dans ton exe final.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2003
    Messages
    311
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 311
    Par défaut
    Yep, je plussoie.

    Cependant je ne vois pas pourquoi ne pas mettre les DLL à la racine de l'EXE ??

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 22
    Par défaut
    Nous trouvons plus "propre" le fait de placer les dll dans un sous-répertoire de l'application. Sans doute une allergie aux dll envahissantes depuis mon séjour sous Windev

    Pour compléter mon pb, voici comment sont liés mes projets.
    - ACLib, bibliothèque de classe, contient des classes permettant d'accéder à des dll C++ via P/Invoke.
    - ACHL7, bibliothèque de classe, utilise la référence ACLib
    - ACHL7Svc, service windows incluant comme référence ACLib et ACHL7.

    J'ai essayé de placer toutes les dll dans un répertoire spécifique indépendant des projets. Toutes les compilations marchent mais le service ne fonctionne pas (même erreur que précédemment).

    Je vais voir ce que je faire avec les méthodes que vous m'avez conseillées.

  7. #7
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    petite suggestion...

    Quand un exe cherche des dll, il les cherche dans le Path de windows après avoir échoué dans le repertoire local... et puis il regarde dans le GAC...

    Une idée serait de modifié l'environnement de l'applaction en ajoutant
    au paramètre Path le chemin ou se trouve tes dll... (et comme l'environnement est local à l'application, ca devrait le faire)

    The Monz, Toulouse

  8. #8
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    La solution du probing pourrait peut être te convenir. Cela consiste à indiquer un ou plusieurs sous-répertoires (relatif au répertoire de l'application) qui seront utilisés par le runtime pour rechercher les assemblys.

    Pour cela, il faut ajouter une entrée runtime dans le fichier de configuration de l'application de cette manière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <runtime>
    	<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    		<probing privatePath="bin;bin2\subbin;bin3"/>
    	</assemblyBinding>
    </runtime>

  9. #9
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    ca marche impec ton truc du probing

    Je ne connaissais pas mais je me doutais bien qu'une telle possibilité devait etre possible avec le fichier de configuration

    The Monz, Toulouse

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 22
    Par défaut
    Ça marche aussi pour mes projets!

    Merci à vous

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

Discussions similaires

  1. Path dynamique des références en VBA
    Par saipas dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 27/08/2007, 10h48
  2. Build-Path / Class-Path : Référence entre projets
    Par JohnNC dans le forum Langage
    Réponses: 1
    Dernier message: 17/01/2007, 14h03
  3. Réponses: 3
    Dernier message: 10/06/2003, 14h16
  4. Redhat-9 changer le path des databases
    Par jean christophe dans le forum Installation
    Réponses: 7
    Dernier message: 30/05/2003, 17h53
  5. [Concept] Table de référence
    Par matlo dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 20/01/2003, 15h01

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