1

設定ファイルを作成しました。

ブール型のフィールド 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

編集

上記のすべての設定は、私のアプリが参照するクラス ライブラリ プロジェクトにあります。多分それが問題ですか?

4

2 に答える 2

1

クラス ライブラリ プロジェクトを使用せずに設定を直接使用してみるか、 のスコープUseXmlPatternForTestServerUserではなく に変更してくださいApplication

C# でのユーザー設定を参照してください

于 2013-07-12T16:19:01.780 に答える
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 に答える