Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.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中的密钥#_C# - Fatal编程技术网

C# 更新app.config c中的密钥#

C# 更新app.config c中的密钥#,c#,C#,我正在引用internet上的示例来更改app.config中的设置,下面是我的代码 string startupPath = AppDomain.CurrentDomain.BaseDirectory.Replace(@"\bin\Debug", "")+ "App.Config"; Configuration config = ConfigurationManager.OpenExeConfiguration(startupPath);

我正在引用internet上的示例来更改app.config中的设置,下面是我的代码

string startupPath = AppDomain.CurrentDomain.BaseDirectory.Replace(@"\bin\Debug", "")+ "App.Config";
                Configuration config = ConfigurationManager.OpenExeConfiguration(startupPath);
                config.AppSettings.Settings.Remove("MaintainBackup");
                config.AppSettings.Settings.Add("MaintainBackup", "No");
                config.Save(ConfigurationSaveMode.Minimal);
问题是,它不是在更新app.config中的键值(在根目录中)
,而是在我使用

  Configuration config = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath);

它会更新bin文件夹中的WinApp.vshost.exe.Config。

问题1.]-我的应用程序正在选择哪个配置文件

根目录中的App.config
或bin文件夹中的WinApp.vshost.exe.config


问题2.]如果它是根目录中的App.config,那么它为什么不更新键值呢?

我将尝试在混乱中建立一些秩序:

这里混合了两个概念:

  • App.Config vs AppName.exe.Config
  • 虚拟主机
  • App.Config是一个开发时文件,编译后将成为AppName.exe.Config,应用程序将在运行时使用此文件

    vshosts.exe是Visual Studio的一个主机文件,旨在在从Visual Studio进行调试时提供更好的性能


    因此,在调试应用程序时,您的名称将是AppName.vshosts.exe,因此将使用的配置文件将是AppName.vshosts.exe.config

    ,因为
    App.config
    在应用程序启动时只读取一次。只需重新启动应用程序,
    ConfigurationManager
    就会有您的值。不,它不起作用,仍然是app.config中的旧值