C# - app config不会改变

Tam*_*arG 11 c# app-config

我想在配置文件中保存一些设置以备将来使用.我正在尝试使用我在所有教程中看到的常规代码 -

 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
 config.AppSettings.Settings["username"].Value = m_strUserName;

 // I also tried - 
 //config.AppSettings.Settings.Remove("username");
 //config.AppSettings.Settings.Add("username", m_strUserName);

 config.Save(ConfigurationSaveMode.Modified);
 ConfigurationManager.RefreshSection("appSettings");
Run Code Online (Sandbox Code Playgroud)

现在 - 我可以看到在运行时 - "Debug"文件夹中的文件"... vshost.exe.config"发生了变化,当我关闭我的应用程序时,它会被删除 - 所有更改都将被删除.我能做什么?

Sco*_*ain 29

要使用普通的exe配置文件进行测试,请在项目属性菜单的"调试"选项卡中取消选中"启用Visual Studio主机进程"复选框.这将使visual studio不再使用该vshost.exe文件启动,并将使用正确的配置文件.

在此输入图像描述


Ste*_*eve 10

将应用程序部署到最终用户时,没有vshost.config.
您的更改将应用​​于真正的exe.config.所以你不必为此担心.

在调试会话中构建应用程序时,项目中的app.config文件将被复制到输出目录中.然后,此配置文件也会复制到vshost.config.这样,app.config的内容将覆盖vshost.exe.config中调试会话期间所做的任何更改.

但是,让我说将这种信息写入应用程序配置是一种不好的做法.配置文件应仅用于存储通常在应用程序生命周期内不会更改的永久配置.例如,连接设置是存储在那里的有效信息,因为您通常不会更改这些信息,并且您不想对它们进行硬编码.

像用户名这样的设置应该使用user.config.此配置是每用户/每个应用程序,并允许读/写访问.