none
Problème lié aux DLL lors du déploiement de mon application RRS feed

  • Question

  • Bonjour,

    J'ai récemment développé une application sur Visual Studio qui utilise de nombreuses DLL.

    Mon application fonctionne sans problème en debug et je l'ai déployé en ClickOne. Elle fonctionne parfaitement !! Cependant, j'ai un petit problème lié a mes DLL. Actuellement, elles sont présentes directement dans la solution, mais puisque cela rend un peu "brouillon" de les avoir toutes présentes ainsi, j'aimerais les mettre dans un dossier ( oui, j'aime que tous soit rangé :D ) qui serait bien sur, lui, présent dans ma solution. Mais Problème, lorsque je procède ainsi et que je génère ma solution, Problème, plus rien ne fonctionne .... De même pour l'application déployée ....

    Je fais donc appel a votre aide pour savoir comment ranger mes DLL dans un dossier sans que tout plante.

    Cordialement.

    mercredi 1 juin 2016 08:19

Réponses

  • Bonjour,

    ce que vous pouvez faire alors et d'ajouter un événement de pré-build (via la fenêtre des propriétés) du projet (Alt + Enter sur le nom du projet) et d'ajouter la commande suivante via l'onglet Evénements de build :

    xcopy /d "$(ProjectDir)REPERTOIRE\*.dll" "$(TargetDir)"

    Ou REPERTOIRE est le répertoire de la solution contenant les DLLs.


    mercredi 1 juin 2016 13:17

Toutes les réponses

  • Vous pouvez essayer ceci:

    • créez un dossier dans votre solution (click droit /ajouter un dossier)
    • Ajoutez vos DLL dans la solution
    • Modifiez les paramètres des DLL dans le projet (Action de Génération= Aucun, Toujorus copier . voir figure)
    • Copiez les DLL dans votre dossier en les drag/drop dans le dossier
    • Régénérez: vous aurez un dossier de DLL dans le dossier Release.
    • Essayez de déployer comme ceci... et dites nous si les DLL sont trouvées :)


    mercredi 1 juin 2016 08:29
  • Bonjour Leo Marliere,

    https://msdn.microsoft.com/en-us/library/823z9h8w.aspx

    Vous pouvez mettre vos DLLs dans un sous-répertoire, pour ce faire dans le fichier app.config, ajoutez le nœuds suivant :

    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <probing privatePath="nomRepertoire" />
      </assemblyBinding>
    </runtime>

    avec privatePath le répertoire correspondant à celui contenant les assemblys.

    mercredi 1 juin 2016 08:34
  • Etrangement, le simple fait de mettre mes DLLs dans un dossier de la solution fait bugger mon Application. Il ne trouve plus certaines DLL ... Pourtant, ce n'est pas comme si j'en avais supprimées ... Elles ont simplement été déplacées ....

    mercredi 1 juin 2016 08:53
  • Il faut ajouter les éléments dans le .config montrés par Arthur....
    mercredi 1 juin 2016 08:59
  • C'est ce que j'ai fait, l'application ce lance, mais maintenant, j'ai un problème de version de librairie.

    Merci pour votre aide, j'essaye de régler mon problème et je reviens vers vous pour vous tenir au courant ;)

    mercredi 1 juin 2016 09:08
  • En fait, lorsque je déploie mon application, il faudrait que mes DLLs ( qui sont dans un dossiers " MesDLLs" du projet ) se copient directement dans le bin\debug et non dans le bin\debug\MesDLLs.

    Et CA !! c'est ce qui me bloque depuis hier ....

    Votre précieuse aide et encore une fois requise ^^'.

    mercredi 1 juin 2016 12:54
  • Bonjour,

    ce que vous pouvez faire alors et d'ajouter un événement de pré-build (via la fenêtre des propriétés) du projet (Alt + Enter sur le nom du projet) et d'ajouter la commande suivante via l'onglet Evénements de build :

    xcopy /d "$(ProjectDir)REPERTOIRE\*.dll" "$(TargetDir)"

    Ou REPERTOIRE est le répertoire de la solution contenant les DLLs.


    mercredi 1 juin 2016 13:17
  • Avez vous mis "Toujours Copier" dans le paramètres "Copier dans le répertoire de sortie"?

    jeudi 2 juin 2016 09:13