C#----操作应用程序配置文件App.config

时间:2023-03-08 15:49:06
C#----操作应用程序配置文件App.config

对配置文件的一些疑问:

在应用程序的目录下,有两处值得注意的地方,一个是应用程序根目录下的App.config文件,和bin\debug\name.exe.config 或者 bin\Release\name.exe.config下的配置文件。

所谓操作的配置文件是其中的哪个呢?bin\debug中的配置文件是在程序在编译环境中运行时从App.config得到的?

第一种方法:

引入System.Configuration.dll,空间System.Configuration

应用程序中执行代码:

             try
{
showData.Text = System.Configuration.ConfigurationSettings.AppSettings["ConnenctionString"];//读取文件中的节点
}
catch (Exception eee)
{ }

App.config添加一些数据:

 <?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<add key="ConnenctionString" value="111"/>
</appSettings>
</configuration>

其中add节点中严格格式写入!!

在开发环境中调试运行,改变name.exe.config中的数据。和App.config一样。

向name.exe.config文件中配置:

 <?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<appSettings>
<add key="ConnenctionString" value="111"/>
</appSettings>
</configuration>

会读取到键名为ConnenctionString的对应的值111.

发现:App.config文件中的节被程序读取到时,会把App.config中的数据保存到name.exe.config;如果没有读取到不会保存到name.exe.config中。在name.exe.config中的修改不会变化到App.config中。

ps1:在VS2005中没有默认的配置文件 ,添加方法有手工和设置。

手工:添加App.Config文件,按格式写配置内容

设置项目:如下图

C#----操作应用程序配置文件App.config

ps2: 在环境VS2005,Windows XP SQLServer2005 Express中。

  配置文件中如下:

<add key="ConnenctionString" value="Data Source=.\SQLEXPRESS;Initial Catalog=zsefg;Integrated Security=True"/>

  能得到正常的连接。但是Data Sourve=.\\SQLEXPRESS时会出现连接异常。

操作配置文件

                 Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
cfa.AppSettings.Settings["ips"].Value = ipSelectFrm.ips;
cfa.AppSettings.Settings["port"].Value = ipSelectFrm.port.ToString();
cfa.Save();

  Configuration类,完成对配置文件的操作。以上是写入操作,操作的目标如下:

   <appSettings>
<add key="ips" value="192.168.0.100" />
<add key="port" value="808" />
</appSettings>

  读取类似。读取如下:

             Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
this.ips = cfa.AppSettings.Settings["ips"].Value;
this.port = Convert.ToInt16(cfa.AppSettings.Settings["port"].Value);