4

アプリケーションの動的パラメーターを格納するために app.config ファイルを使用しています。問題は、app.config ファイルの値を変更してアプリケーションを起動すると、構成ファイルから新しい値が読み込まれないことです。app.config ファイルの値は、コンパイル時にのみ読み取られ、exe ファイルに埋め込まれているようです。

これは私が設定ファイルを読む方法です:

public class Helper
{
    static Helper()
    {
        Foo = ConfigurationManager.AppSettings["Foo"];
    }
    public static string Foo { get; set; }
}

何か不足していますか?

4

2 に答える 2

23

正しいファイルを変更してもよろしいですか?app.configファイルではなく<exename>.exe.config、.exeと同じディレクトリにあるファイルを変更する必要があります。

app.configファイルは、ideで編集するものですが、アプリをコンパイルすると、このファイルの名前が変更され<exename>.exe.config、コンパイル時に出力ディレクトリにコピーされます。.exeは、デフォルト構成を探すときに、拡張子が.configの自分と同じ名前のファイルを探します。

于 2009-12-16T11:33:19.320 に答える
1

クラスとメソッドの静的な性質が問題を引き起こしている可能性があります。たぶん、次のようにリファクタリングします...

public static class Helper
{
    public static string Foo 
    { 
        get
        {
            return ConfigurationManager.AppSettings["Foo"];
        }
    }
}

実際、それについて考えてみると、ConfigurationManager.AppSettings["Foo"]すでに (事実上) 静的呼び出しであるため、あまり役に立ちません。不要な抽象化の別のレイヤーを追加しているだけです。

于 2009-12-16T11:02:11.160 に答える