Год известен, но я использовал этот метод для чтения каждой из настроек:
Configuration config = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
ConfigurationSectionGroup csg = config.GetSectionGroup("applicationSettings");
ClientSettingsSection c = (ClientSettingsSection)csg.Sections["Add your section name here, e.g. Your.Namespace.Properties.Settings"];
foreach (SettingElement e in c.Settings)
{
Debug.WriteLine("SETTING NAME: " + e.Name);
SettingValueElement v = e.Value;
Debug.WriteLine("SETTING VALUE: " + v.ValueXml.InnerText);
}
Это работает с файлом настроек, созданным в проекте библиотеки классов.Файл настроек должен быть назван «YourLibrary.dll.config», а затем развернут в расположении библиотеки.Файл настроек должен иметь содержимое, аналогичное следующему:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="Your.NameSpace.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</sectionGroup>
</configSections>
<applicationSettings>
<Your.NameSpace.Properties.Settings>
<setting name="YourLibrary_WebReferences_YourWebService" serializeAs="String">
<value>http://localhost:3861/YourWebService.asmx</value>
</setting>
<setting name="AnotherSetting" serializeAs="String">
<value>False</value>
</setting>
</Your.NameSpace.Properties.Settings>
</applicationSettings>
<startup>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
Мне не нужно было читать строки подключения из файла конфигурации, но это должно быть возможно путем изменения имени группы разделов, которую вы получаете послеоткрытие конфигурации exe.
Причина, по которой мне нужно было это сделать, заключается в том, что у меня есть пользовательский элемент управления, который оборачивает библиотеку ActiveX / COM, которая затем размещается в IE, в тег «object».У меня есть работающие теги «param», поэтому я мог бы использовать этот механизм для передачи настроек в пользовательский элемент управления, но в то время этот метод казался логичным выбором.К тому же я не позволил этой конкретной проблеме победить меня!
HTH pridmorej:)