Я использую этот код для создания пользовательской настройки во время выполнения:
System.Configuration.SettingsProperty userScopedProperty =
new System.Configuration.SettingsProperty("New Setting");
userScopedProperty.DefaultValue = "This setting default value";
userScopedProperty.IsReadOnly = false;
userScopedProperty.PropertyType = typeof(string);
userScopedProperty.Provider =
Properties.Settings.Default.Providers["LocalFileSettingsProvider"];
userScopedProperty.Attributes.Add(typeof(System.Configuration.UserScopedSettingAttribute),
new System.Configuration.UserScopedSettingAttribute());
Properties.Settings.Default.Properties.Add(userScopedProperty);
Properties.Settings.Default["New Setting"] = "value changed to this";
Properties.Settings.Default.Save();
Properties.Settings.Default.Reload();
Который почему-то работает только иногда и создаст настройки в разделе userSettings в файле user.config. При выполнении в том же сеансе это работает:
Properties.Settings.Default["New Setting"]
Но как только я закрою приложение и запущу его снова, эта строка кода даст мне System.Configuration.SettingsPropertyNotFoundException
. Я пытался добавить Properties.Settings.Default.Reload()
прямо перед попыткой прочитать настройку, но это тоже не работает.
Цель этой части проекта состоит в том, чтобы иметь возможность создавать пользовательские настройки во время выполнения, закрывать программу, и при повторном запуске программы вы можете просматривать эти настройки. Вы также должны иметь возможность изменить их в любой момент. Я запускаю программу в Visual Studio в режиме отладки, не уверен, что эта информация нужна.
Итак, мои вопросы: как мне правильно создать во время выполнения и прочитать свойства, которые хранятся в файле user.config, который я сохранил в предыдущем сеансе? Есть лучший способ это сделать?
Properties.Settings.Default.Properties
доступны только в текущем сеансе. Когда вы перезапустите приложение, вы увидите, что ваши настройкиDefault
всегда совпадают с настройками, определенными в файлеSettings.settings
. Вы можете найти динамически добавленные свойства в файлеuser.config
. Чтобы получить свои свойства, вы можете использовать метод, объясненный здесь. - person Mehdi   schedule 25.04.2021