Comment gérez-vous .NET application.les fichiers de configuration pour les applications de grande taille?
Supposons qu'une grande application composite construite sur plusieurs de la fondation de composants intégrés dans leurs propres assemblées: (lecture de la base de données, gestionnaires de protocole, etc.). Pour certains déploiements, ce qui peut inclure plus de 20 assemblées. Chacune de ces assemblées a des paramètres ou des informations de configuration. Notre équipe a tendance à aimer la VS les paramètres de l'éditeur (et le facile-à-utiliser le code qu'il génère!), et l'application vs utilisateur distinction répond à la plupart de nos besoins.
MAIS....
Il est très fastidieux de copier & collez le nombre de sections de configuration dans notre application .xml. En outre, pour les composants partagés, qui ont tendance à avoir des configurations similaires à travers les applications, cela signifie que nous avons besoin de conserver des paramètres multiples .les fichiers de configuration.
De Microsoft EntLib résout ce problème avec un outil externe pour générer le monstre .fichier de config, mais cela se sent klunky ainsi.
Quelles techniques utilisez-vous pour gérer de grandes .NET .les fichiers de configuration, avec des sections à partir de plusieurs partagé assemblées? Une sorte de mécanisme inclus? Configuration personnalisée lecteurs?
De SUIVI:
De la volonté réponse était exactement ce que je recevais, et d'être élégant pour l'appartement de paire clé/valeur sections. Est-il un moyen de combiner cette approche avec des sections de configuration personnalisée ?
Merci aussi pour les suggestions à propos de la gestion différents .les configs pour différents objectifs. C'est également très utile.
Dave
Vous devez vous connecter pour publier un commentaire.
Vous utilisez un fichier de configuration maître qui pointe vers d'autres fichiers de configuration. Voici un exemple de comment faire cela.
Dans le cas où le lien pourrit, ce que vous faire est de spécifier la configSource pour une configuration particulière de la section. Cela vous permet de définir cette section dans un fichier séparé.
qui implique qu'il y a un fichier appelé "les pages.config" dans le même répertoire qui contient l'intégralité de
<pages />
nœud de l'arbre.Ma méthode préférée consiste à utiliser MSBuild, si vous faites un clic droit sur le projet et cliquez sur "décharger" une nouvelle option de menu pop up qui dit "modifier". Sélectionnez et ouvrez le fichier de projet de sorte que vous pouvez le modifier, faites défiler vers le bas jusqu'à ce que vous trouver a commenté l'article qui est appelé "AfterBuild".
Vous pouvez ensuite ajouter quelque chose comme:
Ce sera de remplacer l'application config avec un nommé [Release|Debug]app.exe.config. De sorte que vous pouvez maintenir des configurations distinctes en fonction de la façon dont le projet est construit.
Mais un rapide et sale option (si vous ne voulez pas jouer avec msbuild) est de maintenir des fichiers de configuration puis de définir celui qui vous voulez inclure, comme ceci:
Et si vous faites un asp.net application, microsoft fournit un utilitaire appelé "Web des Projets de Déploiement" qui va vous permettre de gérer tout cela facilement, cliquez ici
Un excellent moyen de gérer de grands ensembles de configuration est de créer des sections de configuration personnalisée. Phil Haack explique cela très bien dans cet article Des sections de configuration personnalisée en 3 étapes faciles
Définir des configurations de génération pour chaque de votre déploiement/environnement de test et d'utiliser des fichiers de configuration en fonction de chaque configuration de build.
ScottGu a un joli post à ce sujet et il fonctionne très bien. La seule bizarrerie que nous avons est que nous devons nous assurer que les fichiers de configuration (web.config) sont vérifiés pour modifier à partir de TFS avant chaque construction, de sorte qu'il peut être copié.
Nous avons créé un AssemblySettingsConfig classe qui agit comme ConfigurationManager, mais les charges d'un .config pour chaque personne de l'assemblée. Pour l'application a un .config, et toutes les Dll il les références ont leur propre .les fichiers de configuration. A bien fonctionné jusqu'à présent.