App.config仅在调试时读取

时间:2011-03-22 13:05:42

标签: .net configuration-files configuration-management

我目前遇到一个我无法解决的问题。

我有一个应用程序,我有这个代码:

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", "App.config");
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile = Path.Combine(System.Reflection.Assembly.GetExecutingAssembly().Location, "App.config");
MessageBox.Show(ConfigurationSettings.AppSettings.Count.ToString());

配置文件确实在应用程序文件夹中称为App.config(我这样做是因为我有两个应用程序读取/修改相同的配置文件)。

当我通过Visual Studio调试器启动其中任何一个时,它正确地告诉我我有11个appsettings。但是,当在调试器外部运行时,我得到0。

这里可能有什么问题? 我100%确定此代码在过去有效。

2 个答案:

答案 0 :(得分:1)

我现在终于能够自己解决了。解决方案是通过

访问配置设置
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

答案 1 :(得分:0)

看起来您没有将正确的路径传递给App.Config。试试这个:

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", "App.config");
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "App.config"); 
MessageBox.Show(ConfigurationSettings.AppSettings.Count.ToString());

注意对Path.GetDirectoryName()的调用。您的代码将获取exe文件的位置,然后将“App.Config”附加到它,该文件将解析为不存在的文件。