2010-12-09 85 views
0

Nous avons de nombreux environnements et envisageons de créer une configuration d'application dynamique dans le cadre de CI. Les valeurs de configuration seront stockées dans la base de données à l'aide de WPF. L'équipe opérationnelle gère l'application pour les nouvelles entrées de configuration d'application.Générer dynamiquement la configuration de l'application dans le cadre de CI

Le problème auquel je suis confronté est comment puis-je créer dynamiquement la config et le valider? Des avis..? Merci d'avance.

+0

Je pense également à utiliser un gabarit de chaîne comme faisant partie de la solution. Dans un sens, il existe des valeurs spécifiques à l'environnement que l'équipe d'exploitation doit modifier manuellement pour les modifier. – odez213

+0

J'ai regardé l'application config xsd pour le framework .net spécifique et j'essaye de générer le shell xml pour cela. C'est là que je fais des recherches en ce moment. – odez213

Répondre

1

Si le nombre de configurations est fini et connu (test, UAT, bureau de production, mobile de production, etc.), vous pouvez profiter de l'attribut configSource trouvé sur les AppSettings, ConnectionStrings et éléments ConfigSection. Voici la prémisse de base; créer un fichier AppSettings.xyz.config pour chaque configuration, où xyz est le nom de la configuration ("local" "test", "uat", "prod", etc). Créer un seul fichier app.config qui utilise une définition <!ENTITY config "xyz"> et a configSource attributs pour différentes sections ensemble similaire à:

<appsettings configSource="appSettings.&config.config"> 

Maintenant, dans la logique de déploiement, vous changer une chose; la chaîne littérale définie par l'entité. Cette modification est assez simple pour que vous n'ayez pas vraiment besoin d'analyse XML pour effectuer le changement; Slurp le fichier en mémoire avec un FileStream, trouver la définition de l'entité, faire la modification et cracher le nouveau contenu dans le fichier. Si vous utilisez un programme d'installation, vous pouvez contrôler quelles configurations enfants sont installées ou simplement les mettre à la disposition des utilisateurs pour plus de simplicité.

+0

merci pour la pointe d'un bon moyen possible pour la mise en œuvre en utilisant la méthode de modèle de chaîne. Dans l'application, il utilise ce qui suit: et la configuration générée sera: $ customValueFromDatabase odez213

0

Jetez un oeil à T4. Vous pouvez créer un fichier .config squelette avec certaines variables qui sont remplies à partir de la base de données pour générer le fichier spécifique à l'environnement.

+0

T4 est une exagération pour l'utilisateur administrateur de puissance. J'utilise nvelocity pour le modèle de chaîne et c'est l'une des solutions basées sur les modèles. Cependant, le problème est que je veux créer la configuration de l'application à partir de zéro. Quelle est la meilleure façon de le faire? Est-ce que les développeurs mettent chaque entrée de configuration dans la base de données. Puis créer une application personnalisée pour le ramasser et le générer dynamiquement? – odez213