这是代码:
// These is works
Console.WriteLine(Properties.Settings.Default.name);
Configuration configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
KeyValueConfigurationCollection settings = configFile.AppSettings.Settings;
settings.Add("Port", "12");
// Here it fails
configFile.Save(ConfigurationSaveMode.Modified);
app.config文件的内容:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="ConsoleApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
</sectionGroup>
</configSections>
<userSettings>
<ConsoleApplication1.Properties.Settings>
<setting name="name" serializeAs="String">
<value>dasdqweqw</value>
</setting>
</ConsoleApplication1.Properties.Settings>
</userSettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/></startup></configuration>
无法理解为什么它不起作用。代码是对的还是我做错了什么?在线 configFile.Save(ConfigurationSaveMode.Modified);它抛出异常“ConfigurationSection 属性在锁定时无法编辑”。
我决定遵循什么场景:
1. 通过解决方案资源管理器,我打开项目属性页面(解决方案资源管理器 > 项目节点的上下文菜单 > 属性),然后通过项目属性页面中的“设置”选项卡,我创建项目的应用程序设置(范围参数的值为“用户”)。这将在项目的命名空间和相应的类属性中创建 Properties 类(位于 Settings.Designer.cs 文件中)。https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2008/cftf714c%28v=vs.90%292. 要创建用户特定的 user.config 文件,我必须更改添加的设置并调用 Properties.Settings.Default.Save() 方法。如果我只是调用 Properties.Settings.Default.Save() 而不首先更改设置,则不会创建 user.config 文件。
使用示例:
Properties.Settings.Default.updateTime = DateTime.UtcNow;
Properties.Settings.Default.Save();
Console.WriteLine((Properties.Settings.Default.updateTime - DateTime.UtcNow).Hours);
Console.ReadLine();
user.config的内容:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<userSettings>
<coonfoo.Properties.Settings>
<setting name="updateTime" serializeAs="String">
<value>06/03/2018 10:42:03</value>
</setting>
</coonfoo.Properties.Settings>
</userSettings>
</configuration>