2

最も簡単な方法で構成マネージャーを使用しています。

読んだ:

ConfigurationManager.AppSettings["Foo"]

書く:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["Foo"].Value = value;
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");

問題は、別のマシンにアプリケーションをインストールした後、「My.Application.exe.config」というファイルを探している人もいれば、「My.Application.config」を探している人もいます (同じ、「.exe」なし)。 )

もう 1 つの興味深い詳細は、問題のあるマシンに VS をインストールした後、問題なく動作することです。

そして、私の質問は次のとおりです。何か案は?

4

1 に答える 1

0

回答ありがとうございます。リンクは非常に役に立ちました。これは .NET の問題であるため (上記のリンクで説明されているように)、提案とは異なる角度から取り組みました: 私の構成ファイルは膨大で、読み取りと書き込みの両方の操作を要求するため、特別なクラスを使用して処理しています。 - configurationFileHelper.

私がしたことは、このクラスに静的コンストラクターを追加することでした。そこで、ファイルの予想される名前を調べ、必要に応じて、既存のファイルの名前をそれに一致するように変更しました。

    static configurationFileHelper()
    {
        try
        {
            string fullFilename = Application.ProductName + ".exe.config";
            string expectedFilename = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath;
            if (!File.Exists(expectedFilename) && (File.Exists(fullFilename))
                    File.Move(fullFilename, expectedFilename);
        }
        catch { ; }
    }

これが誰かの役に立てば幸いです...

于 2010-08-23T07:08:02.053 に答える