需要一些关于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

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

  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开始读取?或者我是否需要更改这段代码来反映这一点?

需要一些关于app.config和user.config的澄清

问题1:使用设置更容易。而不是创建你自己的配置文件。因为使用第一个选项,你可以使用properties . settings . default . myproperty和app.config文件来访问你的属性,而不是你必须处理ConfigurationManager对象,通常要访问一个属性,你需要事先知道它的名称,它通常是硬编码的。

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

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

希望能有所帮助。