2014-11-04 2 views
0

Моя программа использует некоторые данные окружающей среды, которая ссылается на файл «app.config»:Как динамически применять изменения в app.config при запуске программы?

<configuration> 
... 
    <EnvUnderTest path="settings_a.xml" /> 
... 
<configuration> 

Это необходимо для переключения между этими данными от времени до времени. Но мне не нравится идея напрямую изменять файл app.config. Итак, я подумал, что будет намного лучше, если параметр «путь» будет изменен сразу после запуска программы.

Не могли бы вы рассказать мне, как это можно сделать?

Я попытался следующий код:

string te = ConfigurationManager.AppSettings["EnvUnderTest "]; 
Configuration cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 

но тэ переменного значение нуль, поэтому я понятия не имею, как я мог бы получить доступ значения этого параметра во время выполнения.

+0

Если вам нужно изменить эти значения, и вы знаете нужное значение, что имеет смысл сохранить его в 'app.config' в первую очередь? –

+0

На самом деле вы правы. Но проблема в том, что настройки загружаются в переменную 'cfg'. И ConfigurationManager :: OpenExeConfiguration() не указывает, какой файл загружен. И если бы я знал, как загружать настройки из другого файла, я бы предпочел сделать это. – Eugene

ответ

1

Вы не используете файл конфигурации соответствующим образом. Попробуйте следующее:

<configuration> 
... 
    <appSettings> 

     <add key="EnvUnderTest" value="settings_a.xml" /> 
    </appSettings> 
... 
</configuration> 

Это должно работать с кодом, который вы предоставили. Очевидно, что любой другой ключ, который вы хотите добавить, также должен быть ниже <appSettings>.

+0

Да, это работает. Но по-прежнему существует проблема: как разместить эту конфигурацию является переменной «cfg». По умолчанию он работает со старым тегом «EnvUnderTest» – Eugene

+0

Я не понял ваш вопрос. Вы можете перефразировать? –