1

我创建了一个设置文件。

有一个字段 UseXmlPatternForTestServer,它是 bool。我将范围设置为应用程序并将值设置为 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

编辑

上面的所有设置都在我的应用程序引用的类库项目中。也许这就是问题所在?

4

2 回答 2

1

我遇到了同样的问题,因为范围“用户”也不适合我,我最终创建了自己的 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);
            }
        }
    }
于 2013-07-12T16:36:03.873 回答
1

尝试在没有类库项目的情况下直接使用设置或将范围更改为UseXmlPatternForTestServertoUser而不是Application.

请参阅C# 中的用户设置

于 2013-07-12T16:19:01.780 回答