2011-11-10 7 views
0

Je travaille sur une solution qui a plusieurs projets.C# app.config partage entre plusieurs projets

Je suivre la méthode décrite ici (la première réponse qui suggère d'utiliser un élément de solution commune): single app.config multi-project c#

Le résultat est que, pour chaque projet, le fichier app.config est copié et renommé comme XXX.exe. config. Cependant, la sortie souhaitée est que le nom du fichier de configuration reste le même (par exemple App.config) pour chaque projet. Parce que je voulais mettre tout l'exécutable et les DLL dans le même dossier quand il est déployé (une référence exécutable à la même DLL donc il est logique de les mettre tous ensemble).

Toute suggestion est appréciée.

+3

Pourquoi avez-vous besoin d'une copie du même fichier de configuration pour chaque projet? Pourquoi ne pas lire vos valeurs dans un projet et faire en sorte que ce projet partage ces valeurs publiquement, les rendant disponibles pour d'autres projets? – Bernard

+0

@Bernard. Dans les environnements de production, piloter les paramètres à partir de fichiers de configuration (et avoir plusieurs fichiers de configuration et paramètres de configuration partagée) est très logique. Je travaille sur un projet avec plus de 30 projets de service (Web et Win-hébergé WCF) et le nombre de paramètres communs nous rendait fou (jusqu'à ce que nous les ayons tous changés pour utiliser les fichiers TT). –

Répondre

1

Je vous suggère de regarder en utilisant TT templating. Alors la solution simple est d'avoir un fichier App.tt qui inclut un fichier ttinclude commun. Cela générera un fichier App.config avec le même contenu (ou différent) en fonction d'autres paramètres que vous pouvez définir dans app.config.

Par exemple, nous avons un App.Config qui ressemble à ceci:

<# EnvironmentName = "local"; #> 
<#@ include file="App.Template.ttinclude" #> 

Le App.Template.ttinclude contient tout ce que nous voulons sortie (ainsi que certains paramètres qui changent en fonction de la valeur de l'environnement que nous supportent 8 environnements d'installation

Chaque App.Template.ttinclude inclut réellement un autre fichier de configuration maître qui contient nos paramètres communs, mais cela commence à se compliquer car nous incluons des configurations spécifiques à l'environnement dans le fichier de configuration principal, dans une instruction switch (pour contourner un bug dans le traitement de fichiers TT).

Lorsque nous avons une configuration DLL spécifique à l'application, elle comprend simplement l'une de nos autres:

par exemple. MyApp.Exe.config contient:

<#@ include file="App.tt" #> 
Questions connexes