根据机器名称选择设置

时间:2010-08-15 16:32:40

标签: c# deployment configuration

当我们部署应用程序时,通常会有一个单独的生产和开发机器。大多数应用程序都在常规.NET App.configWeb.config文件中进行设置。例如:

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

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

我们希望应用程序在两组设置之间自动选择,具体取决于机器。有这样做的标准方法吗?欢迎其他建议。

2 个答案:

答案 0 :(得分:2)

我通常使用的方法首先查找机器名称为前缀的设置:

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

这样您就可以拥有默认设置和任何机器的本地设置:

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

答案 1 :(得分:1)

以下方法怎么样?

将机器名称置于其中一个设置中将允许您确定需要使用哪个前缀来加载应用程序设置 - 只要您避免通过标准API加载并改为实现自己的“让我一个设置”值'您可以从机器名称中查找设置前缀,然后查找相关设置。

<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"/>