C# 如何在C中读取不同应用程序的App.Config#
我有一个用C#编写的控制台应用程序,它使用app.config文件。此应用程序旨在使用任务计划程序在服务器上运行。现在我想开发一个从app.config读写的UI。(请注意,此配置无意替换UI应用程序的配置文件。) 但是我很难从文件中读取设置。使用ConfigurationManager,我可以打开配置文件,但无法访问配置设置 这是Visual Studio(2010)生成的示例配置文件: 我也试过这个:C# 如何在C中读取不同应用程序的App.Config#,c#,.net,app-config,C#,.net,App Config,我有一个用C#编写的控制台应用程序,它使用app.config文件。此应用程序旨在使用任务计划程序在服务器上运行。现在我想开发一个从app.config读写的UI。(请注意,此配置无意替换UI应用程序的配置文件。) 但是我很难从文件中读取设置。使用ConfigurationManager,我可以打开配置文件,但无法访问配置设置 这是Visual Studio(2010)生成的示例配置文件: 我也试过这个: var userSection = config.GetSection("Accessin
var userSection = config.GetSection("AccessingConfigSample.Properties.Settings");
两者都返回null
那么我做错了什么
非常感谢您的任何帮助或提示 您作为示例使用的配置文件使用的是,需要使用配置元素上的匹配方法来读取,而不是
GetSection
以下代码段将SectionGroup的内容输出到调试控制台:
if (File.Exists(configFile))
{
var configMap = new ExeConfigurationFileMap { ExeConfigFilename = configFile };
var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
// get the sectionGroup!
var userSectionGroup = config.GetSectionGroup("userSettings");
foreach (var userSection in userSectionGroup.Sections)
{
// check for a ClientSettingSection
if (userSection is ClientSettingsSection)
{
// cast from ConfigSection to a more specialized type
var clientSettingSect = (ClientSettingsSection) userSection;
foreach (SettingElement clientSetting in clientSettingSect.Settings)
{
Debug.WriteLine(String.Format("{0}={1}", clientSetting.Name, clientSetting.Value.ValueXml.InnerText ));
}
}
}
}
请注意,我将对象实例强制转换为以检索设置值(即)
如果将其与您提供的示例配置一起使用,“调试输出”窗格中的结果应为:
ApplicationTitle=访问配置文件
版本号=V1.0
试试config.GetSectionGroup(“userSettings”)[“AccessingConfigSample.Properties.Settings”]
。你也可以简单地将文件解析为任何XML文件…@Crono:我想将其解析为XML文件,但我想把它留给.net的配置程序集。
var userSection = config.GetSection("AccessingConfigSample.Properties.Settings");
if (File.Exists(configFile))
{
var configMap = new ExeConfigurationFileMap { ExeConfigFilename = configFile };
var config = ConfigurationManager.OpenMappedExeConfiguration(configMap, ConfigurationUserLevel.None);
// get the sectionGroup!
var userSectionGroup = config.GetSectionGroup("userSettings");
foreach (var userSection in userSectionGroup.Sections)
{
// check for a ClientSettingSection
if (userSection is ClientSettingsSection)
{
// cast from ConfigSection to a more specialized type
var clientSettingSect = (ClientSettingsSection) userSection;
foreach (SettingElement clientSetting in clientSettingSect.Settings)
{
Debug.WriteLine(String.Format("{0}={1}", clientSetting.Name, clientSetting.Value.ValueXml.InnerText ));
}
}
}
}