对配置文件的一些疑问:
在应用程序的目录下,有两处值得注意的地方,一个是应用程序根目录下的App.config文件,和bin\debug\name.exe.config 或者 bin\Release\name.exe.config下的配置文件。
所谓操作的配置文件是其中的哪个呢?bin\debug中的配置文件是在程序在编译环境中运行时从App.config得到的?
第一种方法:
引入System.Configuration.dll,空间System.Configuration。
应用程序中执行代码:
1 try 2 { 3 showData.Text = System.Configuration.ConfigurationSettings.AppSettings["ConnenctionString"];//读取文件中的节点 4 } 5 catch (Exception eee) 6 { }
App.config添加一些数据:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3 <startup> 4 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 5 </startup> 6 <appSettings> 7 <add key="ConnenctionString" value="111"/> 8 </appSettings> 9 </configuration>
其中add节点中严格格式写入!!
在开发环境中调试运行,改变name.exe.config中的数据。和App.config一样。
向name.exe.config文件中配置:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3 <startup> 4 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 5 </startup> 6 <appSettings> 7 <add key="ConnenctionString" value="111"/> 8 </appSettings> 9 </configuration>
会读取到键名为ConnenctionString的对应的值111.
发现:App.config文件中的节被程序读取到时,会把App.config中的数据保存到name.exe.config;如果没有读取到不会保存到name.exe.config中。在name.exe.config中的修改不会变化到App.config中。
ps1:在VS2005中没有默认的配置文件 ,添加方法有手工和设置。
手工:添加App.Config文件,按格式写配置内容
设置项目:如下图
ps2: 在环境VS2005,Windows XP SQLServer2005 Express中。
配置文件中如下:
1 <add key="ConnenctionString" value="Data Source=.\SQLEXPRESS;Initial Catalog=zsefg;Integrated Security=True"/>
能得到正常的连接。但是Data Sourve=.\\SQLEXPRESS时会出现连接异常。
操作配置文件
1 Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 2 cfa.AppSettings.Settings["ips"].Value = ipSelectFrm.ips; 3 cfa.AppSettings.Settings["port"].Value = ipSelectFrm.port.ToString(); 4 cfa.Save();
Configuration类,完成对配置文件的操作。以上是写入操作,操作的目标如下:
1 <appSettings> 2 <add key="ips" value="192.168.0.100" /> 3 <add key="port" value="808" /> 4 </appSettings>
读取类似。读取如下:
1 Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 2 this.ips = cfa.AppSettings.Settings["ips"].Value; 3 this.port = Convert.ToInt16(cfa.AppSettings.Settings["port"].Value);