Откройте файлы конфигурации другой программы - PullRequest
10 голосов
/ 02 июня 2009

У меня есть программа A , в ней также есть файл app.config, в который я добавил некоторые ключи, такие как адрес сервера, имя пользователя и пароль для подключения к серверу. Это консольное приложение. Теперь я хочу сделать пользовательский интерфейс, который я сделал. В этом интерфейсе я хочу изменить содержимое app.config программы A . Как я могу это сделать?

Вот то, что я пытался, я скопировал пользовательский интерфейс (в основном .exe) в программный каталог A , где также находится файл app.config. Затем в пользовательском интерфейсе я использую метод ConfigurationManager класса OpenExeConfiguration и передаю в качестве аргумента имя файла A программы. Но он выдает и исключение типа System.Configuration.ConfigurationErrorsException .

Так что я думаю, что мой подход неверен. Как мне это сделать?

РЕДАКТИРОВАТЬ: О, я забыл сказать, что я использую C #, .NET 3.5 и VS 2008 (если это помогает: D)

1 Ответ

14 голосов
/ 02 июня 2009

Я не уверен насчет проблемы с вашим подходом (попробуйте добавить трассировку стека к вашему сообщению), но я так и делаю:

var configMap = 
    new ExeConfigurationFileMap
    {
        ExeConfigFilename = externalConfigurationFile
    };
System.Configuration.Configuration externalConfiguration =
    ConfigurationManager.OpenMappedExeConfiguration(
        configMap,
        ConfigurationUserLevel.None);

foreach (var setting in externalConfiguration.AppSettings.Settings)
{
    ...
}

externalConfiguration.Save(ConfigurationSaveMode.Full);
...