2010-08-15 4 views
-1

Lorsque nous déployons des applications, il existe généralement une machine distincte pour la production et le développement. La plupart des applications ont des paramètres dans un fichier .NET App.config ou Web.config. Par exemple:Choisir les paramètres en fonction du nom de la machine

<add key="Dev_Setting1" value="val1"/> 
<add key="Prod_Setting1" value="val2"/> 

<add key="Prod_Setting1" value="val3"/> 
<add key="Prod_Setting2" value="val4"/> 

Nous aimerions avoir les applications choisissent automatiquement entre deux ensembles de paramètres, en fonction de la machine. Y a-t-il une manière standard de faire ceci? Autres suggestions sont les bienvenues.

Répondre

1

Que diriez-vous de l'approche suivante? Avoir le nom de la machine dans l'un des paramètres vous permet de déterminer quel préfixe doit être utilisé pour charger les paramètres de l'application - tant que vous évitez de charger via l'API standard et que vous implémentez le vôtre. valeur de réglage 'vous pouvez rechercher le préfixe de réglage à partir du nom de la machine, puis rechercher le paramètre approprié.

<add key="MachineConfigPrefix_MyMachine1" value="Prod"/> 
<add key="MachineConfigPrefix_MyMachine2" value="Dev"/> 

<add key="Prod_Setting1" value="val3"/> 
<add key="Prod_Setting2" value="val4"/> 

<add key="Dev_Setting1" value="val5"/> 
<add key="Dev_Setting2" value="val6"/> 
1

J'utilise généralement une méthode qui recherche d'abord un paramètre avec le nom de la machine comme préfixe:

public static string GetConfiguration(string key) { 
    return ConfigurationManager.AppSettings[Environment.MachineName + "." + key] ?? ConfigurationManager.AppSettings[key]; 
} 

De cette façon, vous pouvez avoir un réglage par défaut, et les paramètres locaux pour toute machine:

<add key="Setting1" value="val1"/> 
<add key="Developer1.Setting1" value="val2"/> 
<add key="Developer2.Setting1" value="val3"/> 
<add key="TestServer.Setting1" value="val4"/> 
Questions connexes