Изменения в App.config не отражаются после перезапуска приложения - PullRequest
4 голосов
/ 16 декабря 2009

Я использую файл app.config для хранения динамических параметров моего приложения. Проблема в том, что когда я изменяю значение в файле app.config и запускаю приложение, оно не загружает новое значение из файла конфигурации. Похоже, что значения в файле app.config читаются и встраиваются в исполняемый файл только во время компиляции!

Вот как я читаю файл конфигурации:

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

Я что-то упустил?

Ответы [ 3 ]

23 голосов
/ 16 декабря 2009

Вы уверены, что меняете правильный файл? Вы не хотите изменять файл app.config, но файл <exename>.exe.config в том же каталоге, что и .exe

Файл app.config - это то, что вы редактируете в ide, но при компиляции приложения этот файл переименовывается в <exename>.exe.config и копируется в выходной каталог при компиляции. .Exe ищет файл с тем же именем, что и у него, с расширением .config при поиске конфигурации по умолчанию.

1 голос
/ 16 декабря 2009

Статическая природа вашего класса и метода может вызывать у вас проблему. Может быть рефакторинг это к следующему ...

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

На самом деле, если подумать, это не очень вам поможет, поскольку ConfigurationManager.AppSettings["Foo"] уже (фактически) статический вызов - вы просто добавляете еще один уровень абстракции, который вполне может не потребоваться.

0 голосов
/ 16 декабря 2009

Вы сделали сброс IIS?

Кроме того, кэш Microsoft.NET находится в

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

Я бы удалил данные этой папки.

...