Как указать имя файла App.config моего приложения в WPF? - PullRequest
1 голос
/ 23 апреля 2009

Это очень расстраивает ... Я могу установить файл конфигурации для приложения 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?

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

Ответы [ 2 ]

2 голосов
/ 23 октября 2009

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

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 ~

0 голосов
/ 26 апреля 2009

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

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

...