需要一些关于app.config和user.config的澄清
本文关键字:config user app | 更新日期: 2023-09-27 18:13:38
所以在过去的几天里,我一直在So和google上寻找关于app.config
的信息。
我正在编写一个程序,需要使用用户输入的值生成SQL脚本。最初,我使用app.config
来存储一些默认值,以便在程序首次启动时加载到程序中。这工作得很好,直到我试图将新值存储回app.config
文件。这是当我发现app.config
是只读的,我应该一直使用user.config
。
我有几个问题似乎找不到答案:
-
是否建议使用
settings.Setting
来声明我想使用app.config
的所有值?还是手工输入就足够了? -
我一直在阅读
user.config
如何覆盖app.config
设置。但是当我更新我的user.config
文件时,程序仍然从原始的app.config
文件 读取
这是从我的包装类
public NameValueCollection ReadSettings(string sectionName)
{
NameValueCollection scripts = null;
try
{
//read in the current values from the section
scripts = (NameValueCollection)ConfigurationManager.GetSection(sectionName);
if (scripts == null) throw new appConfigException(String.Format("The section {0} does not exists in app.config", sectionName));
}catch (Exception e){
//print out the log file
StreamWriter writer = new StreamWriter(DateTime.Now.ToString("d-MMM-yyyy") + "log.txt");
writer.WriteLine(e.ToString());
writer.Close();
//kill the application process so the user cannot advance further
System.Diagnostics.Process.GetCurrentProcess().Kill();
}
return scripts;
}
是ConfigurationManager
应该自动知道从user.config
开始读取?或者我是否需要更改这段代码来反映这一点?
问题1:使用设置更容易。而不是创建你自己的配置文件。因为使用第一个选项,你可以使用properties . settings . default . myproperty和app.config文件来访问你的属性,而不是你必须处理ConfigurationManager对象,通常要访问一个属性,你需要事先知道它的名称,它通常是硬编码的。
问题2:是的,你是对的app.config不同于Settings.setting。因为你甚至可以创建一个新的文件temp.config,它也可以用作你的应用程序的配置文件。
最后一个问题:我不确定,但我不认为ConfigurationManager知道任何关于这个,只是解析app.config文件。
希望能有所帮助。