Quelle est la meilleure façon de permettre aux membres de l'équipe de personnaliser leur propre app.config, mais conserver une version faisant autorité dans le contrôle de version? Est-il préférable d'exclure tous les fichiers * .config du contrôle de source et d'utiliser un fichier app.config.template dans le contrôle de version?Exclure app.config du contrôle de code source?
Répondre
La méthode modèle est la meilleure méthode que j'ai vue. Si vous pouvez déterminer automatiquement ce qu'il doit contenir (par exemple en exécutant un script pour vérifier les valeurs appropriées), vous pouvez l'inclure dans votre processus de génération et créer automatiquement le fichier à partir du modèle. Si vous ne pouvez pas déterminer automatiquement ce qu'il doit contenir, assurez-vous que votre processus de construction vérifiera le fichier de configuration et fournira au développeur des conseils utiles sur ce qu'il doit configurer avant que la compilation ne fonctionne.
Vous voudrez que votre scm ignore le fichier de configuration lui-même afin que vos développeurs ne le placent pas accidentellement dans le référentiel.
Il n'y a pas de "meilleure façon". Cela dépend de l'équipe et de l'environnement. Parlez-en avec les membres de votre équipe et décidez ce qui fonctionnera dans votre situation. Vous donner un "c'est la meilleure façon" peut ne pas fonctionner dans vos circonstances spécifiques.
Pendant longtemps, j'ai toujours pensé que Microsoft avait fait de la gestion de la configuration un véritable problème.
Heureusement, vous pouvez maintenant extériorisation paramètres dans les sections appSettings
et connectionStrings
etc. en utilisant la propriété file
pour appsettings et la propriété configSource
pour les autres sections.
La documentation de configSource est malheureusement cachée dans MSDN, ce qui explique pourquoi je suppose que ce n'est pas plus connu. La documentation fournie est assez fade, mais il y a une bien meilleure explication ici:
Best Practices for Configuring ASP.NET ConnectionStrings and AppSettings in Web.Config
Pour paraphraser, vous pouvez faire des choses comme ceci:
<appSettings file="webAppSettings.config">
<add key="UseCache" value="True"/>
<add key="MapsKey" value="1234567890-AA"/>
<add key="SMTPServer" value="smtp.peterkellner.net"/>
</appSettings>
<connectionStrings configSource="WebConnectionString.config">
</connectionStrings>
Vous pouvez utiliser cette méthode en conjonction avec la méthode modèle pour gérer les paramètres pour différents environnements aussi.