需要一些关于app.config和user.config的说明

时间:2013-05-15 17:16:32

标签: c# .net app-config

所以我在过去几天一直在SO和google上讨论app.config的信息。

我正在编写一个程序,需要使用用户输入的值生成SQL脚本。最初我使用app.config来存储一些默认值,以便在首次启动时加载到程序中。这工作正常,直到我尝试将新值存储回app.config文件。这是当我发现app.config是只读的时候我应该使用user.config

我有几个问题似乎无法找到答案:

  1. 是否建议使用settings.Setting来声明我要使用的所有值app.config?或者手动输入它们就足够了?

  2. 我一直在阅读user.config如何覆盖app.config设置。但是当我更新我的user.config文件时,该程序仍会从原始app.config文件中读取

  3. 这是来自我的包装类

    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 个答案:

答案 0 :(得分:1)

问题1:使用Settings.settings更容易,而不是创建自己的配置文件yourApp.config。因为使用第一个选项,您只需使用Properties.Settings.Default.MyProperty和app.config文件即可访问您的属性,而您必须处理ConfigurationManager对象,并且通常要访问属性,您需要事先知道名称并且它通常是硬编码的。

问题2:是的,你说得对,app.config与Settings.setting不同。因为您甚至可以创建一个新文件temp.config,它也可以用作应用程序的配置文件。

最后一个问题:我不确定,但我不认为ConfigurationManager知道任何事情,只需解析app.config文件。

希望它有所帮助。