Syntaxe du csproj pour Copier la config d'une dll externe
Hermios
Messages postés264Date d'inscriptiondimanche 14 avril 2013StatutMembreDernière intervention23 mai 2014
-
11 janv. 2012 à 15:37
Hermios
Messages postés264Date d'inscriptiondimanche 14 avril 2013StatutMembreDernière intervention23 mai 2014
-
30 janv. 2012 à 15:22
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.
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 12 janv. 2012 à 17:37
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.
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 :
Hermios
Messages postés264Date d'inscriptiondimanche 14 avril 2013StatutMembreDernière intervention23 mai 20142 30 janv. 2012 à 13:07
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!)
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 30 janv. 2012 à 15:11
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 :
Hermios
Messages postés264Date d'inscriptiondimanche 14 avril 2013StatutMembreDernière intervention23 mai 20142 30 janv. 2012 à 15:22
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é!)