修改应用配置中的设置
本文关键字:设置 配置 应用 修改 | 更新日期: 2023-09-27 18:22:10
我创建了一个设置文件。
有一个字段UseXmlPatternForTestServer,我是一个布尔值。我将范围设置为应用程序,将值设置为 True。我可以看到它向 .config 文件添加了一些内容。
编译后修改了构建目录中的 .config 文件:
<configuration>
<applicationSettings>
...
<Logic.Properties.Settings>
<setting name="UseXmlPatternForTestServer" serializeAs="String">
<value>False</value> // **modified to false**
</setting>
</Logic.Properties.Settings>
</applicationSettings>
</configuration>
即使该值设置为 False,下面的行也会返回 True。为什么?如何从配置文件中获取当前值?
Properties.Settings.Default.UseXmlPatternForTestServer // returns true
编辑
上述所有设置都位于我的应用引用的类库项目中。也许这就是问题所在?
尝试在没有类库项目的情况下直接使用设置,或者将UseXmlPatternForTestServer
的范围更改为User
而不是Application
。
请参阅 C# 中的用户设置
我遇到了同样的问题,因为范围"user"也对我不起作用,我最终创建了自己的 XML 配置,我可以序列化/反序列化并管理我想要的样子。这也很好,因为您可以在配置文件中存储所需的任何内容(例如对象列表(。
基本上,您的模型可能如下所示:
public class Config
{
public string UseXmlPatternForTestServer {get;set;}
//your properties to store
}
用于加载/保存配置的序列化程序类:
public static class XmlConfigSerializer
{
public static Config DeSerialize()
{
try
{
if (!File.Exists("config.xml")) { return null; }
XmlSerializer serializer = new XmlSerializer(typeof(Config));
using (var fs = new FileStream("config.xml", FileMode.Open))
{
return (Config) serializer.Deserialize(fs);
}
}
catch (Exception ex)
{
//log error
return null;
}
}
public static void Serialize(Config config)
{
XmlSerializer serializer = new XmlSerializer(typeof(Config));
using (var fs = new FileStream("config.xml", FileMode.Create))
{
serializer.Serialize(fs, config);
}
}
}