2016-07-02 5 views
-1
 string appConfPath = Directory.GetParent(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)).FullName; 
     string fullPath = appConfPath + "\\Local\\RandFolder\\ThisOne\\application.settings.xml"; 
     var config =  ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 


     config.AppSettings.File = fullPath; 
     config.AppSettings.Settings.Add("Password", "djydyjdjtdtyjddj"); 
     config.Save(ConfigurationSaveMode.Modified); 
     ConfigurationManager.RefreshSection("appSettings"); 
     var temp = config.AppSettings; 

В настоящее время я пытаюсь установить атрибут «файл» моей конфигурации приложения и ссылки на параметры XML, включенные во время выполнения. Я не могу сделать это перед компиляцией, потому что файл настроек XML изменится в зависимости от настроек локальных компьютеров.Изменение атрибута «файл» приложения «Параметры приложения» во время выполнения

Однако после внесения вышеуказанных изменений временная переменная содержит только элемент «Пароль» и не может получить другие настройки, расположенные во включенном пути к файлу. Я знаю, что атрибут файла установлен, но по какой-то причине ссылочный параметр все еще скрыт. Файл application.settings.xml выглядит следующим образом:

<?xml version="1.0" encoding="utf-8"?> 
<appSettings> 
    <add key="ServerLocation" /> 
    <add key="PerforceURI" value="yuhsgbyluvgblsg" /> 
</appSettings> 

Любая помощь очень ценится!

+0

Так почему же вы не используете UserSetting вместо этого? –

+0

Если файл изменится на пользователя, я не думаю, что app.settings - это правильное место для размещения этого файла. Он должен быть частью профиля пользователя (в случае, если вы где-то храните своего пользователя) –

ответ

0

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

ConfigurationManager.RefreshSection обновляет раздел в примере Configuration, используемом static ConfigurationManager. Это не влияет на экземпляр Configuration, который вы создали, вызвав OpenExeConfiguration; для этого вам нужно будет снова позвонить OpenExeConfiguration.

Смежные вопросы