我已经从希望重新使用的逻辑中创建了一个dll。我创建了一个自定义配置部分,该部分可让我读取配置文件中结构良好的列表,并使用它创建一个简单的列表。
<configuration>
<configSections>
<section name="FileToSearchIn" type="MyNamespace.FileToSearchIn, MyNamespace" />
</configSections>
<FileToSearchIn>
<File FileName="Do Not Do Business.txt" />
<File FileName="FBI Most Wanted.BDF" />
</FileToSearchIn>
我的dll具有读取该特定部分的方法,可以将其适当地解析为一个列表。但是我遇到的问题是,这是一个dll,在被引用应用程序使用时将没有自己的配置。
此外,如果可以的话,我不会创建额外的代码来拥有自己的独立配置。理想情况下,我只想让调用程序来管理配置。
所以这是我的问题:
1)便利此dll用户正确创建配置的最佳方法是什么。例如:在README或dll文档中包含说明,或找到让dll编写这些配置的方法。2)是否可以使用类似配置转换(transforms for configs)的工具,如果丢失,则包含您的dll的配置?例如:xdt:Transform="InsertIfMissing"
您可以使用ConfigurationManager.OpenExeConfiguration加载配置。该方法称为OpenExeConfiguration,但不一定必须是实际的exe,您可以使用dll。
根据代码的运行位置,您可以通过多种方式获取dll程序集的名称。如果从dll中的类运行,它将起作用。
var config = ConfigurationManager.OpenExeConfiguration($"{GetType().Assembly.Location}");
var section = config.GetSection("FileToSearchIn");
基本上该方法只是将.config添加到文件名的末尾。