【问题标题】:App.config only read when debuggingApp.config 仅在调试时读取
【发布时间】:2011-03-22 13:05:41
【问题描述】:

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

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

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

【问题讨论】:

  • 您是否尝试过将完整路径传递给 App.config 而不是相对路径?可能是 app.config 文件解析不正确。

标签: .net configuration-files configuration-management


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您似乎没有将正确的路径传递给 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”附加到它,这将解析为一个不存在的文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 2014-04-19
      • 2023-04-08
      • 2018-12-11
      • 2011-05-12
      • 2017-06-23
      相关资源
      最近更新 更多