App.config - <applicationsettings>中的值失败,<appsettings>中的值有效

时间:2015-11-04 20:21:47

标签: c# xml

为了尝试让ConfigurationManager.AppSettings [..]再次运行,我在单个项目中创建了一个 applicationSettings 元素和一个 appSettings 元素控制台应用。

<applicationSettings>
 <el_testo.Properties.Settings>
   <setting name="ApplicationSetting" serializeAs="String">
     <value>Application Value</value>
   </setting>
 </el_testo.Properties.Settings>
</applicationSettings>
<appSettings>
 <add key="AppSetting" value="App Value"/>
</appSettings>

这是我努力检索这两个值。

 Debug.WriteLine("---> ApplicationSettings Test");
 Debug.WriteLine(ConfigurationManager.AppSettings["ApplicationSetting"] + "");
 var applicationSettingsTest = ConfigurationManager.AppSettings["ApplicationSetting"];
 Debug.WriteLine(applicationSettingsTest);
 Debug.WriteLine("---> AppSettings Test");
 Debug.WriteLine(ConfigurationManager.AppSettings["AppSetting"]);
 Debug.WriteLine("---> Complete");

这是我的结果。

---> ApplicationSettings Test


---> AppSettings Test
App Value
---> Complete

我可以“解决”并使用 appSettings 构造。但是,使用此项目和未来项目的项目属性上的“设置”选项卡会很不错。这就是我迄今为止尝试过的工作。

  • 此应用程序中只有一个项目。因此,我不能在一个项目中设置值并尝试在另一个项目中读取它。 (此外, appSettings 有效。)
  • 我验证了该项目包含程序集引用System.Configuration,该类包含正确的命名空间引用(使用System.Configuration;)
  • 我在ConfigurationManager.AppSettings [“ApplicationSetting”]中仔细检查了设置名称的拼写和大小写。
  • 我尝试将App.config链接到不同的XML Schema文件,EnterpriseLibrary.Configuration.xsd和我使用Visual Studio中的XML菜单生成的XML Schema文件。
  • 我擦除了Debug和Release文件夹的内容并重建了项目。

1 个答案:

答案 0 :(得分:2)

您错误地尝试使用以下语句在appSettings下将ApplicationSetting元素作为键读取:

ConfigurationManager.AppSettings["ApplicationSetting"]

这意味着您正试图获得此值:

<appSettings>
    <add key="ApplicationSetting" value="xxxx" />
</appSetting>

相反;当您使用项目属性添加应用程序设置时,它会创建一个扩展ApplicationSettingsBase类的设置类,使用您的设置名称创建属性,并在app.config文件中添加必要的configSection和默认配置元素。为什么不创建和使用那个允许您严格访问应用程序设置的类?

只需转到Project / e_testo属性/设置,然后使用范围应用程序

添加ApplicationSetting

然后,您可以通过

访问ApplicationSetting
var applicationSettingsTest = Properties.Settings.Default.ApplicationSetting