如何从diff应用程序中读取app.config中的用户设置?

eto*_*bot 4 c# winforms

我有一个带有App.config的WinForms .exe,它有一堆在运行时设置并保存的User Scoped Settings.我希望能够使用WinForms应用程序更改和保存设置,然后单击按钮根据这些设置执行一些工作.我还想从sep中读取同一.config文件中的用户设置.控制台应用程序,所以我可以安排工作作为计划任务完成.能够做到这一点的最佳方法是什么?

更新:我尝试了使用ConfigurationManager.OpenExeConfiguration的建议,如某些答案中所述.

Configuration config = ConfigurationManager.OpenExeConfiguration("F:\\Dir\\App.exe");
Run Code Online (Sandbox Code Playgroud)

但是当我尝试检索这样的用户设置时.

string result = config.AppSettings.Settings["DB"].ToString();
Run Code Online (Sandbox Code Playgroud)

我得到一个Null引用错误.

从exe中的代码,但以下正确返回数据库名称.

Properties.Settings.Default.DB
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

更新2:

所以基于下面的一些答案,我现在可以使用以下内容从sep中检索我感兴趣的user.config文件部分的原始XML.ConsoleApp.

System.Configuration.ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = @"D:\PathHere\user.config";
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap,ConfigurationUserLevel.None);
System.Configuration.DefaultSection configSection = (System.Configuration.DefaultSection)config.GetSection("userSettings");
string result = configSection.SectionInformation.GetRawXml();
Console.WriteLine(result);
Run Code Online (Sandbox Code Playgroud)

但我仍然无法为我感兴趣的特定元素提取值.

M0-*_*-3E 6

这应该这样做:

var clientSettingsSection = (System.Configuration.ClientSettingsSection)(ConfigurationManager.GetSection("userSettings/YourApplicationName.Properties.Settings"));
var setting = clientSettingsSection.Settings.Get("yourParamName_DB_");
string yourParamName_DB = ((setting.Value.ValueXml).LastChild).InnerText.ToString();
Run Code Online (Sandbox Code Playgroud)