3

因此,过去几天我一直在 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

这是来自我的包装类

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?还是我需要更改这部分代码以反映这一点?

4

1 回答 1

1

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

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

最后一个问题:我不确定,但我认为 ConfigurationManager 对此一无所知,只需解析 app.config 文件即可。

希望能帮助到你。

于 2013-05-28T18:32:56.367 回答