Syntaxe du csproj pour Copier la config d'une dll externe

Signaler
Messages postés
264
Date d'inscription
dimanche 14 avril 2013
Statut
Membre
Dernière intervention
23 mai 2014
-
Messages postés
264
Date d'inscription
dimanche 14 avril 2013
Statut
Membre
Dernière intervention
23 mai 2014
-
Salut à tous,
Dans un premier temps, mon projet :
Je dois générer une dll c# (A), qui utilise une autre dll c# (B), laquelle a un fichier de config. Pour cela, j'ai créé une interface (en C#), qui permet de créer la dll c# (A).
Pour compiler, cette interface va en fait compiler un fichier csproj, qui, non content de créer la dll c# (A), copie dans le même fichier la dll c# (B), via le tag :
<Reference Include="DllB">
<HintPath>C:\pathB\B.dll</HintPath>
</Reference>

Cependant, j'aimerai bien qu'il copie aussi le fichier de config de la dll c# (B), B.dll.config.

Comment puis je faire ca (Bien sur, j'ai déjà essayé de rajouter un hintpath, puis tout un bloc reference, ca a pas marché non plus)?

J'espère que c'est clair (J'ai des doutes!), sinon, n'hésitez pas à me faire savoir.

Merci beaucoup


@+. Hermios

4 réponses

Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Salut,

as-tu essayé d'utiliser les events post build avec xcopy ?
Je m'en sers très souvent dans les grosses solutions et c'est plutôt pratique.
Tu trouveras plus d'info sur cette commande ici.

Un exemple de mes utilisations :
xcopy /s /y "$(ProjectDir)*.files" "$(SolutionDir)OtherProject\files"

Cette commande copie tous les fichiers ".files" du répertoire du projet courant (et de ses sous-répertoires) et les copies dans un répertoire d'un autre projet.

Tu peux insérer ce genre de commande via VS :
- click-droit sur ton projet > "Propriétés"
- onglet "Evénement de build"
- tu saisies tes commandes dans la zone pré-build ou post-build suivant le besoin et tu sauvegardes (Ctrl+S)

Tu peux également écrire ça dans le .csproj :
- créer un tag PropertyGroup
- créer dedans un tag PostBuildEvent
- copier dedans les commandes à exécuter
Exemple :
  xcopy /s /y "*.*" "\folder"
  





Bon code
Messages postés
264
Date d'inscription
dimanche 14 avril 2013
Statut
Membre
Dernière intervention
23 mai 2014
2
salut Jopop,
Merci beaucoup de ta réponse (Et désolé de répondre si tard, j'ai eu d'autres priorités depuis!!!)
En fait, je crois que j'ai très mal exprimé mon problème (Je dirai même, ce que j'ai écrit est totalement faux!!!).
Copier des données n'est pas un problème, le fait est que j'aimerai plutôt les prendre en compte dans mon projet.
donc reprenons :
J'ai un projet A, qui appelle une librairie B.
B a son fichier de config avec des données d'application, A a le sien.
Le problème est que lorsque je lance le projet A, qui appelle parfois B, qui appelle parfois sa config, ca ne marche que si j'ai recopié la config de B dans celle de A. Autrement dit, seule la config de ma source A est lue

Ma formule est
ConfigurationManager.AppSettings[key];

Donc, comment lui dire que B, même si appelé par A, doit lire sa propre config? (Vraiment, je sais pas pourquoi j'ai parlé du csproj, ca n'a rien à voir, dsl encore une fois!)

Merci beaucoup


@+. Hermios
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
Salut,

effectivement c'est plus tout à fait pareil, toutefois ma réponse précédente ne sera pas complètement inutile. Utilise cette méthode pour exporter ton ProjetB.congif dans le répertoire bin de ton projet A. Ensuite il faut modifier ton ProjetA.config pour lui dire qu'il faut qu'il prenne en compte l'autre fichier de config, en ajoutant un attribut à ta balise comme suit :

<!-- fichier ProjetA.config -->

<!-- tes settings -->


Attention, si ton ProjetB.config possède des clés identiques à ProjetA.config c'est celles-ci qui seront appliquées.

Bon dev
Messages postés
264
Date d'inscription
dimanche 14 avril 2013
Statut
Membre
Dernière intervention
23 mai 2014
2
Re,
Merci beaucoup.
Je vais tester ca (heu plus tard, de nouveau d'autres trucs sur le feu), mais ca devrait marcher. Merci encore (Je validerai la réponse dès que j'aurai testé!)


@+. Hermios