C#项目中如何读取并修改App.config文件

C#项目中如何读取并修改App.config文件

时间:2014-10-01
id="iframeu1234_0" src="http://pos.baidu.com/tcem?rdid=1234&dc=2&di=u1234&dri=0&dis=0&dai=2&ps=242x835&dcb=BAIDU_SSP_define&dtm=HTML_POST&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1471096712165&ti=C%23%E9%A1%B9%E7%9B%AE%E4%B8%AD%E5%A6%82%E4%BD%95%E8%AF%BB%E5%8F%96%E5%B9%B6%E4%BF%AE%E6%94%B9App.config%E6%96%87%E4%BB%B6%20-%20C%23%E6%95%99%E7%A8%8B%20-%20%E7%BC%96%E7%A8%8B%E5%85%A5%E9%97%A8%E7%BD%91&ari=2&dbv=2&drs=1&pcs=1335x625&pss=1335x251&cfv=18&cpl=28&chi=1&cce=true&cec=GBK&tlm=1412130292&rw=625&ltu=http%3A%2F%2Fwww.bianceng.cn%2FProgramming%2Fcsharp%2F201410%2F45324.htm&ltr=http%3A%2F%2Fcn.bing.com%2Fsearch%3Fq%3DC%2523%2B%25e4%25bf%259d%25e5%25ad%2598%25e5%2588%25b0%25e9%2585%258d%25e7%25bd%25ae%25e6%2596%2587%25e4%25bb%25b6%2B%25e5%25b9%25b6%25e8%25af%25bb%25e5%258f%2596%26first%3D31%26FORM%3DPORE&ecd=1&psr=1366x768&par=1366x728&pis=-1x-1&ccd=24&cja=true&cmi=57&col=zh-CN&cdo=-1&tcn=1471096712&qn=d49585b858534555&tt=1471096712149.35.392.393" width="300" height="250" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="padding: 0px; margin: 0px; border-width: 0px; vertical-align: bottom;">

本文简单介绍C#项目中读取并修改App.config文件的方法,AppConfig最重要的功能就是它将命令行选项和配置文件选项统一到一种数据结构中。

1. 向C#项目实例中的项目添加app.config文件:

右击C#项目实例中项目名称,选择“添加”→“添加新建项”,在出现的“添加新项”对话框中,选择“添加应用程序配置文件”;如果项目以前没有配置文件,则默认的文件名称为“app.config”,单击“确定”。出现在设计器视图中的app.config文件为:

<?xmlversionxmlversionxmlversionxmlversion="1.0"encoding="utf-8" ?>     
<configuration>     
</configuration>

在项目进行编译后,在binDebuge文件下,将出现两个配置文件(以本项目为例),一个名为“***.EXE.config”,另一个名为“***.vshost.exe.config”。第一个文件为项目实际使用的配置文件,在程序运行中所做的更改都将被保存于此;第二个文件为原代码“app.config”的同步文件,在程序运行中不会发生更改.

2.  SQL 2005 ExpressconnectionStrings配置:

注意:等于号的两边不要加上空格。

<connectionStrings>     
         <addnameaddname="***Name"  
              connectionString="Data Source=localhost;Initial Catalog=jxcbook;User ID=sa;password=********"  
              providerName="System.Data.SqlClient"  />     
</connectionStrings>

3. appSettings/userSetting 配置节:

appSettings配置节为整个程序的配置,如果是对当前用户的配置,请使用userSettings配置节,其格式与以下配置书写要求一样。

<appSettings>     
         <clear  />     
         <addkeyaddkeyaddkeyaddkey="userName"value=""  />     
         <addkeyaddkeyaddkeyaddkey="password"value=""  />     
</appSettings>

4.读取与更新app.config

注意:要使用以下的代码访问app.config文件,除添加引用System.Configuration外,还必须在项目添加对System.Configuration.dll的引用。

(1) 读取connectionStrings配置节

///<summary>     
///依据连接串名字connectionName返回数据连接字符串      
///</summary>     
///<param name="connectionName"></param>     
///<returns></returns>     
private static string GetConnectionStringsConfig(string connectionName)      
{      
        string connectionString =       
        ConfigurationManager.ConnectionStrings[connectionName].ConnectionString.ToString();      
           
        return connectionString;      
}

(2) 更新connectionStrings配置节

///<summary>     
///更新连接字符串      
///</summary>     
///<param name="newName">连接字符串名称</param>     
///<param name="newConString">连接字符串内容</param>
///查看本栏目更多精彩内容:http://www.bianceng.cn/Programming/csharp/
///<param name="newProviderName">数据提供程序名称</param>     
private static void UpdateConnectionStringsConfig(string newName,      
    string newConString,      
    string newProviderName)      
{      
    bool isModified = false;    //记录该连接串是否已经存在      
    //如果要更改的连接串已经存在      
    if (ConfigurationManager.ConnectionStrings[newName] != null)      
    {      
        isModified = true;      
    }      
    //新建一个连接字符串实例      
    ConnectionStringSettings mySettings =       
        new ConnectionStringSettings(newName, newConString, newProviderName);      
    // 打开可执行的配置文件*.exe.config      
    Configuration config =       
        ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);      
    // 如果连接串已存在,首先删除它      
    if (isModified)      
    {      
        config.ConnectionStrings.ConnectionStrings.Remove(newName);      
    }      
    // 将新的连接串添加到配置文件中.      
    config.ConnectionStrings.ConnectionStrings.Add(mySettings);      
    // 保存对配置文件所作的更改      
    config.Save(ConfigurationSaveMode.Modified);      
    // 强制重新载入配置文件的ConnectionStrings配置节      
    ConfigurationManager.RefreshSection("ConnectionStrings");      
}

(3)读取appStrings配置节

///<summary>     
///返回***.exe.config文件中appSettings配置节的value项      
///</summary>     
///<param name="strKey"></param>     
///<returns></returns>     
private static string GetAppConfig(string strKey)      
{      
    foreach (string key in ConfigurationManager.AppSettings)      
    {      
        if (key == strKey)      
        {      
            return ConfigurationManager.AppSettings[strKey];      
        }      
    }      
    return null;      
}

(4) 更新connectionStrings配置节

///<summary>      
///在***.exe.config文件中appSettings配置节增加一对键、值对      
///</summary>      
///<param name="newKey"></param>      
///<param name="newValue"></param>      
private static void UpdateAppConfig(string newKey, string newValue)      
{      
    bool isModified = false;          
    foreach (string key in ConfigurationManager.AppSettings)      
    {      
       if(key==newKey)      
        {          
            isModified = true;      
        }      
    }      
        
    // Open App.Config of executable      
    Configuration config =       
        ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);      
    // You need to remove the old settings object before you can replace it      
    if (isModified)      
    {      
        config.AppSettings.Settings.Remove(newKey);      
    }          
    // Add an Application Setting.      
    config.AppSettings.Settings.Add(newKey,newValue);         
    // Save the changes in App.config file.      
    config.Save(ConfigurationSaveMode.Modified);      
    // Force a reload of a changed section.      
    ConfigurationManager.RefreshSection("appSettings");      
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值