我已阅读this post from Marc Gravell显示如何从DLL读取app.config
-文件。当我试图从库中读取userSettings
我得到一个空列表:从DLL中访问app.config
var settings = ConfigurationManager.OpenExeConfiguration("CodeGeneratorApp.exe").AppSettings.Settings;
的app.config
- 文件看起来是这样的:
<?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;
的快速监视我看到返回的对象的FilePath
设置为应用程序配置-FIL e,因此被发现并正确打开。
特别是什么我正尝试实现的是反序列化value
为CodeExtensionList
,但我不知道如何甚至访问文件内的部分。
是因为这些都是'userSettings'和你问'AppSettings'? –
我不认为你可以通过这种方式进入用户范围设置。我认为你需要[这个丑陋的动物](https://msdn.microsoft.com/en-us/library/ms134269(v = vs.110).aspx)。有很多不喜欢System.Configuration,“不这样做”是我能想到的唯一的好建议。一个EXE项目应该配置它使用的类库。 –