C#WPF ConfigurationManager.AppSettings 仅包含 4 个条目

C#WPF ConfigurationManager.AppSettings Only Containing 4 Entries

我有一个 app.config 文件,它是按照以下内容构建的:-

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="key1" value="value1" />
        <add key="key2" value="value2" />
        <add key="key3" value="value3" />
        <add key="key4" value="value4" />
.....       
        </appSettings>
</configuration>

此配置包含 12 个不同键的条目,但是当我调试我的代码时,我发现 ConfigurationManager.AppConfig 只包含前 4 个键。我已经尝试在调用它之前使用代码刷新该部分,但仍然只包含 4 个键(前 4 个是我们开发时在应用程序中构建的)并且不会显示在键 4 之后添加的任何内容。

知道我做错了什么吗?

编辑

抱歉缺少细节,实际的 app.config 文件看起来像 :-

?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="Lic" value="123456" />
        <add key="API" value="https://example.com/api/" />
        <add key="User" value="User" />
        <add key="Config" value="Config"/>
        <add key="ConN0" value="ConN Value 0, additional details here" />
        <add key="ConN1" value="ConN Value 1, additional details here" />
<add key="ConN2" value="ConN Value 2, additional details here" />
<add key="ConN3" value="ConN Value 3, additional details here" />
<add key="ConN4" value="ConN Value 4, additional details here" />
<add key="ConN5" value="ConN Value 5, additional details here" />
<add key="ConN6" value="ConN Value 6, additional details here" />
<add key="ConN7" value="ConN Value 7, additional details here" />
    </appSettings>
</configuration>

我尝试运行的代码如下:

List<string> values = new List<string>();
            foreach (string key in ConfigurationManager.AppSettings)
            {
                if (key.StartsWith("ConN"))
                {
                    string value = ConfigurationManager.AppSettings[key];
                    values.Add(value);
                }

            }

代码总是生成一个空列表,并且在单步执行 ConfigurationManager.AppSettings 时总是只有 4 个条目用于 Lic、API、用户和配置。我们已经将问题的位置缩小到上面的代码,因为代码的下一步是在数据网格中显示键值,但即使在完整构建中它也总是空的。我们检查了构建中的 .config 文件,其中包含正确的条目。

我不确定应该在哪里寻找调试的配置,因为我找不到任何引用 app.config 文件位置的地方。我在机器上搜索了其他 app.config 文件,我能找到的与该项目唯一相关的文件是其中包含完整配置的文件。

如果有人能可怜我并为我指明正确的方向,我将永远感激不已?

我还没有真正找出为什么我在 ConfigurationManager.AppSettings 中只能看到 4 个条目,但我已经解决了这个问题。

我使用 :

将配置值移动到 app.config 中它们自己的部分
<configSections>
        <section name="MyConfig" type="System.Configuration.AppSettingsSection" />
    </configSections>

然后更改代码中的所有引用以打开一个新的 AppSettingsSection,如下所示:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            AppSettingsSection appSettingSection = (AppSettingsSection)config.GetSection("MyConfig");

通过执行此操作然后引用 appSettingSection 而不是 ApplicationManager.AppSettings 键和值可用且有效。