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

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

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

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

我错过了什么吗?

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

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

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

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

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

你做过IISReset吗?

此外,还有Microsoft.NET缓存

 WINDOWS\Microsoft.NET\Framework\vXXXXX\Temporary ASP.NET Files. 

我会删除这个文件夹的数据。