Приветствую всех! Когда наши приложения начинают превращаться в большие проекты, обрастая все большим функционалом. Нам как разработчикам приходится производить сохранения настроек программы, к примеру, цвет, размер, расположения, заполнения форм итд. Для этих целей существует несколько вариантов.
1. База данных, либо текстовые файлы и их аналоги.
2. Реестр.
3. Конфигурационный фаил.
4. Внутри самого приложения.
С первым вариантом все понятно, создать фаил или базу и сохранить в них соответствующие настройки.
С реестром по сложнее, так как для работы с ним, приложение должно быть запущенно от имени администратора, это не удобно, и не все пользователи обладают такими правами. Однако можно приобрести лицензию в районе 500$ в год, и ваше приложение сможет вносить изменения в реестр без запуска от имени администратора.
А вот последних два варианта мы сейчас и рассмотрим как этом можно сделать.
После компиляции приложения в папки с *.exe у нас находятся не сколько файлов, один из них конфигурационный.

Обычно к имени исполняемого файла с расширением добавляется .config , он и является вашим конфигурационным файлом.
Именно с ним мы можем распространять свое приложения и производить сохранения в него.
Основан он на XML формате и первоначально имеет следующее содержимое:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
</configuration>
Для этого нам надо будет подключить сборки и добавить ссылки:
using System.Collections.Specialized; using System.Configuration;
Далее нам нужно в файле конфигурации создать ключи и значения, у меня вот что получилось:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<appSettings>
<add key="sizeW" value="30"/>
<add key="sizeH" value="30"/>
</appSettings>
</configuration>
Теперь нам нужно написать логику программы, я решил восстанавливать размер консоли тот что находится в конфигурационном файле:
static void Main(string[] args)
{
NameValueCollection allAppSettings = ConfigurationManager.AppSettings;
int w = int.Parse(allAppSettings["sizeW"]);
int h = int.Parse(allAppSettings["sizeH"]);
Console.SetWindowSize(w,h);
Console.ReadKey();
}
По сути это лишь удобство которое разработало Microsoft, на самом деле обычная работа с Xml файлом, который хранит в себе соответствующие настройки приложения.
Еще одним интересным способом является сохранения настроек внутри самого приложения:
Для этого создайте приложения и выберите его свойство, в открытом окне перейдите во вкладу параметры и установите как на рисунке:

Здесь мы задали имя переменно, а точнее два имени w и h которые будут означать ширину и высоту консольного окна, далее мы выбрали тип переменно, область и значения в 30 пикселей.
Далее нам необходимо подключить сборку, она состоит из названия приложения и .Properties;
using MyApp.Properties;
Теперь рассмотрим сам код программы:
using System;
using MyApp.Properties;
namespace MyApp
{
class Program
{
static void Main(string[] args)
{
int w = (int)Settings.Default["w"]; //считываем значения
int h =(int)Settings.Default["h"];
Console.SetWindowSize(w,h);
Console.WriteLine("w={0} h={1}",w,h);
Settings.Default["w"]=w+1;
Settings.Default["h"]=h+1;
Settings.Default.Save(); //сохраняем новые значения
Console.ReadKey();
}
}
}
Как видно из кода программы работа с настройками совсем не сложная, мы в начале считываем данные с переменных и сохраняем их, после изменяем окно консоли и выводим их значения, далее увеличиваем значения на 1 и производим сохранения настроек.
Теперь попробуйте несколько раз запустить приложения и вы увидите как окно и значения изменяются каждый раз.

