может кто-нибудь помочь мне, как я могу установить/сохранить значения в файле app.config с помощью С#, возможно ли это вообще?
Запись значений в файле app.config
Ответ 1
Если вы используете App.Config для хранения значений в разделе <app Key="" Value="" />
или в разделе "Пользовательские разделы", используйте класс ConfigurationManager, иначе используйте класс XMLDocument.
Вы можете использовать код, размещенный на CodeProject
Ответ 2
Попробуйте использовать следующий код:
Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);
config.AppSettings.Settings.Add("YourKey", "YourValue");
config.Save(ConfigurationSaveMode.Minimal);
Это сработало для меня: -)
Ответ 3
В Framework 4.5 часть настроек ConfigurationManager AppSettings.Settings [ "key" ] предназначена только для чтения, поэтому мне пришлось сначала удалить ключ, а затем добавить его, используя следующее:
Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);
config.AppSettings.Settings.Remove("MySetting");
config.AppSettings.Settings.Add("MySetting", "some value");
config.Save(ConfigurationSaveMode.Modified);
Не волнуйтесь, вы не получите исключения, если попытаетесь удалить ключ, который не существует.
Этот пост дает хороший совет
Ответ 4
private static string GetSetting(string key)
{
return ConfigurationManager.AppSettings[key];
}
private static void SetSetting(string key, string value)
{
Configuration configuration =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
configuration.AppSettings.Settings[key].Value = value;
configuration.Save(ConfigurationSaveMode.Full, true);
ConfigurationManager.RefreshSection("appSettings");
}
Ответ 5
Как уже упоминалось, вы можете сделать это с помощью ConfigurationManager.AppSettings.Settings
. Но:
Использование Settings[key] = value
не будет работать, если ключ не существует.
Используя Settings.Add(key, value)
, если ключ уже существует, он присоединяется к новому значению к его значению, разделенному запятой, что-то вроде
<add key="myKey" value="value1, value2, value3" />
Чтобы избежать этих неожиданных результатов, вы должны обрабатывать два сценария
- Если запись с данным ключом существует? затем обновите его значение
- если запись с данным ключом не существует? затем создайте новую запись (ключ, значение)
Код
public static void Set(string key, string value)
{
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var entry = config.AppSettings.Settings[key];
if (entry == null)
config.AppSettings.Settings.Add(key, value);
else
config.AppSettings.Settings[key].Value = value;
config.Save(ConfigurationSaveMode.Modified);
}
Для получения дополнительной информации о чеке entry == null
, отметьте этот пост.
Надеюсь, это поможет кому-то.
Ответ 6
Да, вы можете - см. ConfigurationManager
Класс ConfigurationManager включает членов, которые выполните следующие задачи:
- Чтение и запись файлов конфигурации в целом.
Научитесь использовать docs, они должны быть вашим первым портом для вызова такого вопроса.
Ответ 7
Для консольного приложения .NET 4.0 ни один из них не работал у меня. Поэтому я использовал следующее ниже и работал:
private static void UpdateSetting(string key, string value)
{
Configuration configuration = ConfigurationManager.
OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
configuration.AppSettings.Settings[key].Value = value;
configuration.Save();
ConfigurationManager.RefreshSection("appSettings");
}
Ответ 8
Попробуйте следующее:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings[key].Value = value;
config.Save();
ConfigurationManager.RefreshSection("appSettings");
Ответ 9
string filePath = System.IO.Path.GetFullPath("settings.app.config");
var map = new ExeConfigurationFileMap { ExeConfigFilename = filePath };
try
{
// Open App.Config of executable
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
// Add an Application Setting if not exist
config.AppSettings.Settings.Add("key1", "value1");
config.AppSettings.Settings.Add("key2", "value2");
// Save the changes in App.config file.
config.Save(ConfigurationSaveMode.Modified);
// Force a reload of a changed section.
ConfigurationManager.RefreshSection("appSettings");
}
catch (ConfigurationErrorsException ex)
{
if (ex.BareMessage == "Root element is missing.")
{
File.Delete(filePath);
return;
}
MessageBox.Show(ex.Message);
}