重新启动应用程序后,App.config中的更改不会反映出来

时间:2009-12-16 10:57:59

标签: c# app-config appsettings

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

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

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

我错过了什么吗?

3 个答案:

答案 0 :(得分:23)

您确定要更改正确的文件吗?您不想更改app.config文件,而是更改<exename>.exe.config文件,与.exe

在同一目录中

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

答案 1 :(得分:1)

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

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

实际上,考虑到它,它对你来说并没有多大帮助,因为ConfigurationManager.AppSettings["Foo"]已经(有效地)是一个静态调用 - 你只是添加另一层抽象,这可能是不需要的。 / p>

答案 2 :(得分:0)

你做过IISReset吗?

此外,还有位于

中的Microsoft.NET缓存
WINDOWS\Microsoft.NET\Framework\vXXXXX\Temporary ASP.NET Files. 

我会删除此文件夹的数据。