Как указать имя файла App.config моего приложения в WPF?

Это очень расстраивает... Я могу просто настроить файл конфигурации для приложения Windows Forms. Учти это:

public static void Main(){
    AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"SharedAppConfig.config");
    //do other things
}

Однако в приложении WPF это, похоже, не работает! Если я задаю это значение, значение свойства AppDomain.CurrentDomain.SetupInformation.ConfigurationFile является правильным, но любые вызовы этого файла конфигурации во время отладки не дают результатов. В App.config есть параметры конфигурации WCF, которые мне нужно разделить между приложениями, поэтому это мое предлагаемое решение. Можно ли динамически установить местоположение моего файла конфигурации в WPF?

Помощь! Спасибо!


person Mark Carpenter    schedule 23.04.2009    source источник


Ответы (2)


Вы должны быть в состоянии сделать что-то вроде:

using System.Configuration;

public class TryThis
{
    Configuration config = ConfigurationManager.OpenExeConfiguration("C:\PathTo\app.exe");

    public static void Main()
    {
        // Get something from the config to test.
        string test = config.AppSettings.Settings["TestSetting"].Value;

        // Set a value in the config file.
        config.AppSettings.Settings["TestSetting"].Value = test;

        // Save the changes to disk.
        config.Save(ConfigurationSaveMode.Modified);
    }
}

ПРИМЕЧАНИЕ. Будет предпринята попытка открыть файл с именем app.exe.config в папке C:\PathTo. Это также ТРЕБУЕТ, чтобы по тому же пути существовал файл с именем «app.exe». Однако файл «app.exe» может быть просто пустым файлом. Для вашего случая я бы почти создал общую библиотеку «Config.dll», которая будет обрабатывать файл конфигурации.

~md5sum~

person Nathan Wheeler    schedule 22.10.2009

Это на стороне сервиса или на стороне клиента? На стороне службы часто бывает так, что служба работает в своем собственном AppDomain, поэтому, если вы установите AppDomain.CurrentDomain.SetData(...), она не будет применяться к конфигурации службы.

Я не совсем уверен, как обойти это, но вы должны иметь возможность управлять конфигурацией службы, реализуя свой собственный ServiceHost.

person Karl    schedule 26.04.2009
comment
Нет, это на стороне клиента. Я обнаружил, что могу указать файлы app.config моих клиентских приложений на одни и те же внешние файлы (appConfig, привязка и клиент — все они указывают на SharedAppConfig.config, SharedBinding.config и SharedClient.config с использованием атрибута configSource). Это, кажется, работает в то же время. - person Mark Carpenter; 27.04.2009