0

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

我有一个应用程序,其中有以下代码:

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% 确定这段代码在过去是有效的。

4

2 回答 2

1

我现在终于能够自己解决了。解决方案是通过访问配置设置

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
于 2011-03-22T13:16:35.390 回答
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”附加到它,这将解析为一个不存在的文件。

于 2011-03-22T13:27:08.927 回答