app.config动态修改及读取

1.添加应用程序配置文件

右键点击项目,选择“添加”→“添加新建项”→“添加应用程序配置文件”将其添加到项目中。

2.设置配置文件

<?xmlversion="1.0"encoding="utf-8" ?>

<configuration>

<connectionStrings>
        <add name="connStr" connectionString="This is ConnectionString"/>
    </connectionStrings>
    <appSettings>
        <add key="key1" value="This is Key"/>
    </appSettings>

</configuration>

3.读取配置文件(项目中必须添加system.configuration引用:右击项目-添加引用-选择.net中system.configuration)

public string ReadConfig()

{

ConfigurationManager.RefreshSection("connectionStrings");  //读取之前强制刷新节点清除缓存

ConfigurationManager.RefreshSection("appSettings");          //读取之前强制刷新节点清除缓存

string connStr= ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;

string keyVal=ConfigurationManager.AppSettings["key1"].ToString();

return  string.Format("connStr:{0} keyVal:{1}",connStr,keyVal);

}

4.动态设置配置文件

public void SettingConfig(string name,string value)

{

            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);//当前应用程序的配置文件
            ConnectionStringSettings conn = config.ConnectionStrings.ConnectionStrings["connStr"];
            if (conn!=null)
            {
                config.ConnectionStrings.ConnectionStrings.Remove("connStr"); //移除节点
            }
          config.ConnectionStrings.ConnectionStrings.Add(new ConnectionStringSettings(name,value)); //添加新的节点

          AppSettingsSection appSettings = (AppSettingsSection)config.GetSection("appSettings");
            //删除name,然后添加新值
          appSettings.Settings.Remove("key1");
           appSettings.Settings.Add(name, value);
           config.Save(); //保存配置文件

}

其它获取配置文件方法

1.调用到xxx.vshost.exe.config

 string ass = Assembly.GetEntryAssembly().Location;
  Configuration config = ConfigurationManager.OpenExeConfiguration(ass);

2.随应用程序域决定使用哪种配置文件

 string path = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;

Configuration config = ConfigurationManager.OpenExeConfiguration(path);

3.同上

 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

原文地址:https://www.cnblogs.com/net-study/p/3471280.html