所以我在过去几天一直在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
开始阅读?或者我是否需要更改此部分代码才能反映出来?
答案 0 :(得分:1)
问题1:使用Settings.settings更容易,而不是创建自己的配置文件yourApp.config。因为使用第一个选项,您只需使用Properties.Settings.Default.MyProperty和app.config文件即可访问您的属性,而您必须处理ConfigurationManager对象,并且通常要访问属性,您需要事先知道名称并且它通常是硬编码的。
问题2:是的,你说得对,app.config与Settings.setting不同。因为您甚至可以创建一个新文件temp.config,它也可以用作应用程序的配置文件。
最后一个问题:我不确定,但我不认为ConfigurationManager知道任何事情,只需解析app.config文件。
希望它有所帮助。