C# ConfigurationManager.OpenMappedExeConfiguration有问题的行为

C# ConfigurationManager.OpenMappedExeConfiguration有问题的行为,c#,wpf,config,C#,Wpf,Config,我的WPF应用程序有一个非常奇怪的问题。我正在尝试使用以下方法打开常规配置文件: ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); fileMap.ExeConfigFilename = ConfigurationManager.AppSettings[ PATH_TO_CONFIG ]; //which returns a valid path s_config = ConfigurationManager.Op

我的WPF应用程序有一个非常奇怪的问题。我正在尝试使用以下方法打开常规配置文件:

ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = ConfigurationManager.AppSettings[ PATH_TO_CONFIG ]; //which returns a valid path 
s_config = ConfigurationManager.OpenMappedExeConfiguration( fileMap, ConfigurationUserLevel.None );  
当您第一次运行应用程序时,它可以正常工作-它在app.exe所在的目录中找到配置文件。-D:\MyApp\bin\Debug\MyConfigFile.conf但当您通过右键单击工具栏中正在运行的应用程序图标打开另一个应用程序实例,并从上下文菜单中选择打开新实例时,我会看到一个奇怪的行为: s_config.FilePath现在找不到我的配置文件,因为它指向“C:\Windows\systems32\myConfigFile.exe.config”,并且只有当第二个应用程序像这样启动时,此问题才会再次出现


有人知道问题出在哪里吗?

我们没有找到解决问题的办法,所以我们努力解决。如果找不到配置文件,我们使用 System.Reflection.Assembly.GetExecutionGassembly()位置

获取配置文件的完整路径并传递到fileMap.ExeConfigFilename

我认为这与ConfigurationManager是一个静态类有关。OK@RoyDictus,但我仍然需要一个解决方案,以了解如何使这些类正常工作或以其他方式加载此配置文件。这需要心理调试。默认情况下,这样的快捷方式不会出现,您已经做了一些操作,将其添加到任务栏按钮的上下文菜单中。把工作目录弄错了。然后,在代码中使用相对文件路径会加剧这种情况,从而以Explorer使用的默认目录结束。通过使用Assembly.GetEntryAssembly()找到您的安装目录,创建一个可靠的完整路径名。谢谢@Hans,但我认为在右键单击时任务栏中有图标的每个工作程序都可以选择打开该应用程序的另一个实例(至少在Windows 7中)。只需尝试一个干净的WPF项目。