2017-02-22 7 views
1

В проекте приложения консоли. Я пытаюсь записать значения в файл app.config и сохранить его навсегда, но сохранить его можно только в памяти. Я пробовал все решения в Write values in app.config file, но никто не работает для меня.Как написать значение для файла app.config навсегда в консольном приложении?

Любые идеи, что делать, чтобы изменения были постоянными?

app.config файл:

<appSettings> 
    <add key="test" value="123456" /> 
</appSettings> 

класса с двумя методами только сохранения значения в памяти:

public static class ConfigurationHelper 
{ 

    public static void SetSetting(string key, string value) 
    { 
     Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
     configuration.AppSettings.Settings[key].Value = value; 
     configuration.Save(ConfigurationSaveMode.Modified); 
     ConfigurationManager.RefreshSection("appSettings"); 
    } 


    public static void SetSetting2(string key, string value) 
    { 
     Configuration configuration = ConfigurationManager. 
      OpenExeConfiguration(Assembly.GetExecutingAssembly().Location); 
     configuration.AppSettings.Settings[key].Value = value; 
     configuration.Save(); 
     ConfigurationManager.RefreshSection("appSettings"); 
    } 

} 

Простой тест, который выписывает изменения, но при перестраивать проекта или открытия app.config в блокноте изменения не сохраняются:

[Test] 
public void FirstTest() 
{ 
    Console.WriteLine("Value before: " + ConfigurationHelper.Get<string>("test")); 
    ConfigurationHelper.SetSetting2("test", "NewValue"); 
    Console.WriteLine("Value after: " + ConfigurationHelper.Get<string>("test")); 
} 
+0

Когда вы перестраиваете приложение, оно копирует файл app.config из вашего проекта в ваш выходной каталог, перезаписывая его. Либо не делайте этого, либо скопируйте изменения, которые вы вписали в файл проекта. –

+0

Спасибо, я думаю, я понимаю проблему. Любые идеи о том, как скопировать изменения из выходного файла обратно в файл app.config? –

ответ

2

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

шаг 1
пойти solution explorer -> Properties -> Settings и создать файл настроек.
шаг 2
добавить настройки, которые вы хотите использовать
шаг 3
Использование в коде

добавить using yourNameSpace.Properties;

считанное значение установки:
var name = Settings.Default.Name1;

седений значение установка:
Settings.Default.Name1 = value;

Сохранения настроек:
Settings.Default.Save();

Надеется, что это помогло вам.

+0

Спасибо Maciej, попробуем это или рассмотрим вместо этого db :) –