一丶创建一个App.config
1.右键项目->添加->新建项
2.选择应用程序配置文件
创建后会在项目底下多出一个App.config文件
在App.config内下添加内容
// App.config里的内容
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="test" value="This is value" ></add>
</appSettings>
</configuration>
3.读入App.config里test的值
①首先要引入System.Configuration;
using System.Configuration;
②因为ConfigurationSettings.AppSettings已经过时了,所以我们使用ConfigurationManager.AppSettings来读入test的值
但是ConfigurationManager.AppSettings一般情况下是不会显示的
所以我们要右键项目->添加引用,选择System.Configutaion->确定
③接着编写代码,在Main函数中
//读取App.config里test的值
static void Main(string[] args)
{
string word1 = ConfigurationSettings.AppSettings["test"];
Console.Write(word1);
Console.Read();
}
然后输出了test的值
4.向App.config里的appSettings写入数据,并显示出来
// 写入数据
static void Main(string[] args)
{
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings.Add("test2", "This a Second Value");
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");//重新加载新的配置文件
string word2 = ConfigurationManager.AppSettings["test2"];
Console.Write(word2);
Console.Read();
}
原来没有test2的值,现在在代码写入后就有了test2的值了
在执行代码没有退出控制台时,写入的test2将在configtest\configtest\bin\Debug中的configtest.vshost.exe.Config中暂时保存,而不是在configtest.exe.Config中(该路径是代码存放的位置)
退出控制台后,也就是关闭输出结果的窗口后,可以发现之前程序运行时的test2没了
此时注释掉上面的几行代码,单独运行下面程序是没有输出的,但是之前已经写入了数据了。
static void Main(string[] args)
{
//Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//config.AppSettings.Settings.Add("test2", "This a Second Value");
//config.Save(ConfigurationSaveMode.Modified);
//ConfigurationManager.RefreshSection("appSettings");//重新加载新的配置文件
string word2 = ConfigurationManager.AppSettings["test2"];
Console.Write(word2);
Console.Read();
}
这是为什么呢,这是因为数据在configtest.vshost.exe.Config中暂时保存,而不是在configtest.exe.Config中,需要存在configtest.exe.Config中才可以读取到数据,要怎么才能在configtest.exe.Config保存数据呢?
当前的configtest.exe.Config只有一个test
当我们将之前注释的代码解开,在configtest\configtest\bin\Debug中找到configtest.exe点击运行,运行后在configtest.exe.Config中就多了一个test2了
然后再把刚刚的代码注释掉运行
static void Main(string[] args)
{
//Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
//config.AppSettings.Settings.Add("test2", "This a Second Value");
// config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");//重新加载新的配置文件
string word2 = ConfigurationManager.AppSettings["test2"];
Console.Write(word2);
Console.Read();
}
此时有数据输出