代码之家  ›  专栏  ›  技术社区  ›  Andomar

根据计算机名称选择设置

  •  -1
  • Andomar  · 技术社区  · 14 年前

    当我们部署应用程序时,通常有一台单独的机器用于生产和开发。大多数应用程序在常规.NET中都有设置 App.config Web.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 回复  |  直到 14 年前
        1
  •  1
  •   Will A    14 年前

    下面的方法怎么样?

    在其中一个设置中使用机器名将允许您确定加载应用程序设置需要使用的前缀-只要您避免通过标准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"/>
    
        2
  •  2
  •   Guffa    14 年前

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

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