Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在app.config中修改设置_C#_.net - Fatal编程技术网

C# 在app.config中修改设置

C# 在app.config中修改设置,c#,.net,C#,.net,我创建了一个设置文件 有一个字段使用XmlPatternForTestServer,我将其设置为bool。我将范围设置为AppApplication,将值设置为True。我可以看到它在.config文件中添加了一些内容 编译后,修改了生成目录中的.config文件: <configuration> <applicationSettings> ... <Logic.Properties.Settings>

我创建了一个设置文件

有一个字段使用XmlPatternForTestServer,我将其设置为bool。我将范围设置为AppApplication,将值设置为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>
编辑


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

尝试在不使用类库项目的情况下直接使用设置,或者将
UseXmlPatternForTestServer
的范围更改为
User
,而不是
Application


请参见

我遇到了同样的问题,因为作用域“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);
            }
        }
    }

右键单击“解决方案资源管理器”中的项目,然后单击“属性”,在中间打开一个新选项卡,然后在选项卡上向左单击设置。查看其中显示的值,并确保其更新为您希望的值。它甚至可能会弹出,说一个设置被修改了,你想更新它还是按照这些思路更新它。它被设置为True。问题是,我想在生成后手动将其更改为false。我相信将作用域设置为application会使值为只读。如果生成并检查文件,是否会将其更改回true?可能只是在重建项目时您的更改被覆盖。从您上次的编辑(上面的所有设置都在我的应用程序引用的类库项目中。也许这就是问题所在?)
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);
            }
        }
    }