Я прочитал this post from Marc Gravell, где показано, как читать app.config
-файл из DLL. Когда я пытаюсь читать userSettings
внутри этой библиотеки я получаю пустой список:Доступ к app.config из DLL
var settings = ConfigurationManager.OpenExeConfiguration("CodeGeneratorApp.exe").AppSettings.Settings;
app.config
-file выглядит следующим образом:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="CodeGenerator.CodeGeneratorApp.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<CodeGenerator.CodeGeneratorApp.Properties.Settings>
<setting name="CodeExtensions" serializeAs="Xml">
<value>
<CodeExtensionList>
<Extension AssemblyQualifiedName="CodeGenerator.Extensions.NamespaceTypesExtension, CodeGenerator, Culture=neutral">
<NamespaceTypesExtension />
</Extension>
...
</CodeExtensionList>
</value>
</setting>
</CodeGenerator.CodeGeneratorApp.Properties.Settings>
</userSettings>
</configuration>
Моя DLL и приложения расположены в той же папке и даже когда я добавить
var settings = ConfigurationManager.OpenExeConfiguration("CodeGeneratorApp.exe").AppSettings.Settings;
к QuickWatch я вижу, что FilePath
возвращенного объекта устанавливается в приложениях конфиг-фил e, поэтому он был найден и открыт должным образом.
В частности, я пытаюсь де-сериализовать value
для CodeExtensionList
, но я не знаю, как получить доступ к этому разделу внутри файла.
это потому, что те 'userSettings' и вы просите' AppSettings'? –
Я не думаю, что вы можете перейти к настройкам пользовательской области. Я думаю, вам нужно [это уродливое животное] (https://msdn.microsoft.com/en-us/library/ms134269 (v = vs.110) .aspx). Существует много неприятностей в отношении System.Configuration, «не делайте этого» - единственный хороший совет, о котором я могу думать. Проект EXE должен настроить библиотеку классов, которую он использует. –