Каков наилучший способ синхронизации app.config и app.vshost.config? (или расширить ConfigurationManager) - PullRequest
1 голос
/ 20 января 2011

Есть много примеров того, как читать / писать app.config в переполнении стека (и остальной части Интернета). Однако ответы не являются согласованными, и ни вопрос, ни ответ обычно не указывают, что данные могут быть сохранены в app.vshost.config во время отладки.

В некоторых ответах даже рекомендуется использовать для этого XMLReader / XMLWriter, который не должен быть правильным ответом, поскольку для этой цели существует специальный класс Configuration.

Мое тестирование (код ниже) показывает, что ConfigurationManager чтения и записи происходят в app.vshost.config во время отладки и в app.config при нормальной работе.

Я понимаю, почему это происходит, но я хотел бы найти стандартный способ чтения / записи файла конфигурации при отладке, а не отладке. Возможно, это требует размышления, возможно, это требует записи данных в двух местах.

В любом случае, я бы предпочел, чтобы мои тестеры не смотрели ни в app.config, ни в app.vshost.config; Я хочу стандартизировать фиксированное поведение для всех моих компонентов, которые используют конфигурацию (привязки WCF, трассировка, Log4Net и т. Д.)

Нестандартная реализация может происходят, когда жесткие коды приложений путь и имя файла конфигурации читать. Затем во время отладки неверный файл конфигурации может быть прочитан или обновлен.

Мой рабочий код приведен ниже (хотя многие люди думают , что он не работает):

        var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        config.AppSettings.Settings.Remove("AgentID1");
        config.AppSettings.Settings.Add("AgentID1", "test12");
        config.Save(ConfigurationSaveMode.Full);

1 Ответ

3 голосов
/ 20 января 2011

Вероятно, самый простой способ - просто отключить процесс хостинга Visual Studio при отладке (Project properties - Debug - uncheck Enable Visual Studio hosting process).

...