Rod*_*ler 5 configuration configurationmanager c#-2.0
我正在访问我的程序集的配置,如下所示:
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = Assembly.GetExecutingAssembly().Location + ".config";
Configuration conf = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
AppSettingsSection appSettings = conf.AppSettings;
Run Code Online (Sandbox Code Playgroud)
我的.config文件包含这样的部分
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="CsDll.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<connectionStrings>
<add name="CsDll.Properties.Settings.SabreCAD" connectionString="A Connection string." />
<add name="CsDll.Properties.Settings.StpParts" connectionString="Another connection string" />
</connectionStrings>
<applicationSettings>
<CsDll.Properties.Settings>
<setting name="StpInsertSearchPath" serializeAs="Xml">
<value>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>A string</string>
<string>Another string in the collection</string>
Run Code Online (Sandbox Code Playgroud)
如果我编辑.config文件,我可以成功读取连接字符串,包括更改.所以,我知道我已连接到正确的文件.但我无法在appSettings对象中找到该字符串集合.它不在.Settings KeyValueConfigurationCollection中.我在哪里可以找到我的字符串集合?
您应该使用这种更简单的语法访问集合中的项目
foreach (string s in CsDll.Properties.Settings.Default.StpInsertSearchPath)
{
Console.WriteLine(s);
}
Run Code Online (Sandbox Code Playgroud)
编辑:
以下代码应该可以解决问题
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = Assembly.GetExecutingAssembly().Location + ".config";
Configuration conf = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
ConfigurationSectionGroup appSettingsGroup = conf.GetSectionGroup("applicationSettings");
ClientSettingsSection clientSettings = (ClientSettingsSection) appSettingsGroup.Sections["CsDll.Properties.Settings"];
ConfigurationElement element = clientSettings.Settings.Get("StpInsertSearchPath");
string xml = ((SettingElement)element).Value.ValueXml.InnerXml;
XmlSerializer xs = new XmlSerializer(typeof(string[]));
string[] strings = (string[])xs.Deserialize(new XmlTextReader(xml, XmlNodeType.Element, null));
foreach (string s in strings)
{
Console.WriteLine(s);
}
Run Code Online (Sandbox Code Playgroud)
可能有一个较短的方式,但这对我有用.
| 归档时间: |
|
| 查看次数: |
8755 次 |
| 最近记录: |