14

app.config値を読み取り、メッセージ ボックスに表示し、外部テキスト エディタを使用して値を変更し、最後に更新された値を表示したいと考えています。

次のコードを使用してみました:

private void button2_Click(object sender, EventArgs e)
{
    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    ConfigurationManager.RefreshSection("appSettings");
    ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name);
    MessageBox.Show(ConfigurationManager.AppSettings["TheValue"]);
}

しかし、うまくいきません。古い値が表示されます (外部テキスト エディターで変更する前)。助言がありますか?

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
  <add key="TheValue" value="abc"/>
</appSettings>
</configuration>
4

5 に答える 5

13

それはあなたを助けるかもしれません

このように設定を保存してみてください

System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["KeyName"].Value = "NewValue";
config.AppSettings.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Modified);

そして、このようにフェッチします

ConfigurationManager.RefreshSection("appSettings");
System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
于 2013-04-07T10:44:43.050 に答える
3

次のコードを使用して試すことができます。

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
KeyValueConfigurationCollection settings = config.AppSettings.Settings;            
// update SaveBeforeExit
settings["TheValue"].Value = "WXYZ";
config.Save(ConfigurationSaveMode.Modified);

MessageBox.Show(ConfigurationManager.AppSettings["TheValue"]);
于 2013-04-07T10:41:10.810 に答える
2

これにより、app.config ファイルがディスクからリロードされます。

var appSettings = System.Configuration.ConfigurationManager.OpenExeConfiguration(System.Reflection.Assembly.GetEntryAssembly().Location).AppSettings;
MessageBox.Show(appSettings.Settings["TheValue"].Value);
于 2017-12-28T22:44:57.197 に答える
1

アプリケーションのプロパティ設定 (Properties.Settings.Default.Xxxx) を使用している場合は、次を使用できます。

Properties.Settings.Default.Reload(); var x = Properties.Settings.Default.Xxxx; // x は config から新しい値を取得します

于 2020-09-24T12:25:49.360 に答える