我目前遇到一个我无法解决的问题。
我有一个应用程序,我有这个代码:
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%确定此代码在过去有效。
答案 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”附加到它,该文件将解析为不存在的文件。