4

我正在使用 app.config 文件来存储我的应用程序的动态参数。问题是,当我更改 app.config 文件中的值并启动应用程序时,它不会从配置文件中加载新值。似乎 app.config 文件中的值仅在编译时被读取并嵌入到 exe 文件中!

这就是我读取配置文件的方式:

public class Helper
{
    static Helper()
    {
        Foo = ConfigurationManager.AppSettings["Foo"];
    }
    public static string Foo { get; set; }
}

我错过了什么吗?

4

2 回答 2

23

您确定要更改正确的文件吗?您不想更改 app.config 文件,而是更改<exename>.exe.config与 .exe 位于同一目录中的文件

app.config 文件是您在 ide 中编辑的文件,但是当您编译应用程序时,该文件被重命名<exename>.exe.config并在编译时复制到输出目录。在查找默认配置时,.exe 会查找与自身同名且扩展名为 .config 的文件。

于 2009-12-16T11:33:19.320 回答
1

您的类和方法的静态性质可能会导致您出现问题。也许将其重构为以下...

public static class Helper
{
    public static string Foo 
    { 
        get
        {
            return ConfigurationManager.AppSettings["Foo"];
        }
    }
}

实际上,考虑一下,它对您没有太大帮助,因为ConfigurationManager.AppSettings["Foo"]它已经(有效地)是一个静态调用 - 您只是添加了另一个可能不需要的抽象层。

于 2009-12-16T11:02:11.160 回答