错误的 app.config 加载

Posted

技术标签:

【中文标题】错误的 app.config 加载【英文标题】:Wrong app.config loading 【发布时间】:2013-04-18 01:25:56 【问题描述】:

我有一个简单的 C# 控制台应用程序,它需要从 app.config 文件中提取一些值。问题是它似乎打开了一个单独的隐藏配置文件,我无法找到或弄清楚如何修复。

这就是我正在做的事情,添加了一些额外的废话并更改了名称,因为到目前为止我一直在使用反复试验:

var configPath = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile; var fileMap = new ExeConfigurationFileMap(); fileMap.RoamingUserConfigFilename = configPath; fileMap.ExeConfigFilename = configPath; fileMap.LocalUserConfigFilename = configPath; var config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); ConfigurationSection 部分 = config.GetSection("appSettings"); section.SectionInformation.AllowExeDefinition = ConfigurationAllowExeDefinition.MachineToApplication; section.SectionInformation.UnprotectSection(); section.SectionInformation.ForceSave = true; 字符串值 = config.AppSettings.Settings["ValueHere"].Value; 字符串 otherValue = ConfigurationManager.AppSettings["ValueHere"].ToString();

configPath 指向包含 app.config 在内的文件所在的正确路径。 app.config 的名称是 APPLICATION_NAME.exe.config。

如果我删除配置文件,应用程序将愉快地返回值,因此我 100% 确定它引用了其他文件,我只是无法确定该文件在哪里或如何修复它。

在调试中运行应用程序会指向正确的路径,但它当然位于 bin -> debug 文件夹中,几乎没有用处。只有在安装测试和生产中才会出现此问题。

编辑:文件夹内容中只有一个 app.config 文件。该应用程序正在其他地方搜索并找到另一个。

【问题讨论】:

在“The Pragmatic Programmer”中,Hunt 和 Thomas 说不要在不理解的情况下使用生成的代码。我要补充一点,不要在不理解的情况下使用生成的代码。换句话说,在制作您自己的设置代码之前,请先查看设置设计器的功能。 【参考方案1】:

如果设置具有用户范围,它将被写入用户(漫游)配置文件中的配置文件。见:When using a Settings.settings file in .NET, where is the config actually stored?

所以检查设置属性的范围。

【讨论】:

以上是关于错误的 app.config 加载的主要内容,如果未能解决你的问题,请参考以下文章

加载了错误的 App.config

从 app.config 加载配置(如果可用)

PHP PSR-0 静态类

从 App.Config 将程序集加载到 AppDomain

在运行时加载 App.Config

使用 nunit 重新加载 app.config