WPF configurationmanager.appsettings集合为空

时间:2017-10-27 22:12:00

标签: c# wpf configurationmanager

我有一个包含多个项目的WPF应用程序(mvvm)。在主项目中,我有一个App.config文件。我通过Settings.settings添加了几个设置。 App.config文件如下所示:

<configSections>
  <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
    <section name="VSAutomation.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </sectionGroup>
<section name="log4net" type="log4net.config.Log4NetConfigurationSectionHandler, log4net" />

log4net stuff here...
 <applicationSettings>
    <VSAutomation.Properties.Settings>
        <setting name="SimDir" serializeAs="String">
            <value>"C:\Program Files (x86)\sim"</value>
        </setting>
    </VSAutomation.Properties.Settings>
</applicationSettings>

当我尝试从其他模块之一访问这些设置时

string appFolder = ConfigurationManager.AppSettings.Get("SimDir");

返回null。如果我设置断点并评估

AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

它指向正确的appname.exe.config文件,设置正确。

ConfigurationManager.AppSettings.Count返回0

这真的很奇怪。我在这里看了几十个问题StackOverflowflow,但还没有找到解决方案。它与log4net部分有关吗?

1 个答案:

答案 0 :(得分:0)

这是我的解决方案,以防万一其他人有这个特定版本的问题。我试图在Visual Studio中使用Settings.settings UI。它创建了上面显示的结构。在仔细审核this article之后,我尝试创建了一个appSettings部分,并且有效。

<appSettings>
   <add key="SimDir" value="C:\Program Files (x86)\sim"/>
</appSettings>

所以现在

string appFolder = ConfigurationManager.AppSettings.Get("SimDir");

检索正确的值。