2013-07-12 2 views
1

Я создал файл настроек.Изменить настройки в app.config

Существует поле UseXmlPatternForTestServer, которым я являюсь bool. Я задал область применения и значение True. Я вижу, что он добавил некоторый контент в файл .config.

После компиляции модифицированный файл .config в директории для сборки:

<configuration> 
    <applicationSettings> 
     ... 
     <Logic.Properties.Settings> 
      <setting name="UseXmlPatternForTestServer" serializeAs="String"> 
       <value>False</value> // **modified to false** 
      </setting> 
     </Logic.Properties.Settings> 
    </applicationSettings> 
</configuration> 

Даже если установлено значение False, то строка ниже возвращает True. Зачем? И как я могу получить текущее значение из файла конфигурации?

Properties.Settings.Default.UseXmlPatternForTestServer // returns true 

редактировать

Все настройки выше в проект библиотеки классов, на который ссылается мое приложение. Может, в этом проблема?

+1

щелкните правой кнопкой мыши проект в обозревателе решений и выберите пункт Свойства нового вкладка должна открываться посередине, а затем на вкладках в левом клике по настройкам. Посмотрите, какое значение отображается там, и убедитесь, что оно обновлено до того, что вы хотите. он может даже всплыть и сказать, что параметр был изменен, если вы хотите его обновить или что-то в этом направлении. – Bearcat9425

+0

Устанавливается как True так, как должно быть. Дело в том, что я хочу изменить его вручную на false после сборки. – gisek

+0

Я считаю, что установка области действия приложения делает значения только для чтения. – Logarr

ответ

1

Попробуйте использовать настройки непосредственно без проекта библиотеки классов или измените область действия UseXmlPatternForTestServer на User вместо Application.

См User Settings in C#

1

я столкнулся с той же проблемой, и потому, что сфера «пользователь» не работает для меня тоже, я в конечном итоге создать свой собственный XML-конфигурации, которую я могу сериализации/десериализации и управлять, как я хочу быть. Это также приятно, потому что вы можете хранить все, что захотите, в своем конфигурационном файле (например, список объектов).


В основном ваша модель может выглядеть следующим образом:

public class Config 
{ 
    public string UseXmlPatternForTestServer {get;set;} 
    //your properties to store 

} 

Serializer класс для загрузки/сохранения конфигурации:

public static class XmlConfigSerializer 
    { 

     public static Config DeSerialize() 
     { 
       try 
       {   
        if (!File.Exists("config.xml")) { return null; } 

        XmlSerializer serializer = new XmlSerializer(typeof(Config)); 
        using (var fs = new FileStream("config.xml", FileMode.Open)) 
        { 
         return (Config) serializer.Deserialize(fs); 
        }     
       } 
       catch (Exception ex) 
       { 
        //log error 
        return null; 
       } 
     } 

     public static void Serialize(Config config) 
     { 
      XmlSerializer serializer = new XmlSerializer(typeof(Config)); 
      using (var fs = new FileStream("config.xml", FileMode.Create)) 
      { 
       serializer.Serialize(fs, config); 
      } 
     } 
    } 
Смежные вопросы