我正在编写一个类库作为抽象,用于登录我编写的任何应用程序,服务等。我通过使其非常可配置以满足我对大多数应用程序/服务日志记录方案的需求而使其变得非常强大。
该配置旨在指定以下内容:
我已经阅读了一些关于DLL程序集配置的其他stackoverflow问题,它导致托管程序集/ app的app.config之间发生冲突。我相信我的程序集只是提供配置文件。
这是一个很好的场景吗?将我自己的配置烘焙到我的项目中以便我的记录器从XML文件中读取以检索配置值可能是一个更好的主意吗?
答案 0 :(得分:9)
你能做的是
创建自定义配置部分(使用例如COnfiguration Section Designer工具)
将您的程序集配置放入单独的MyAssembly.config
文件
从主机应用程序的配置中引用该程序集配置文件:
<configuration>
<configSections>
<section name="YourAssembly"
type="YourAssembly.ConfigSection, YourAssembly" />
</configSections>
<YourAssembly configSource="MyAssembly.config" />
</configuration>
这样,您可以将配置“外部化”到一个单独的配置文件中,您只有一次(在程序集的项目中),任何需要它的项目只需要在自己的配置文件中进行这些设置。
答案 1 :(得分:3)
听起来像自定义配置部分可以很好地适用于您的情况。许多库,例如企业库就是这样做的。查看有关创建一个的MSDN article。
答案 2 :(得分:3)
.NET配置机制不是为了处理DLL的配置文件。您应该使用适当的设置配置应用程序,并将它们传递给您从DLL实例化的类。
可以像通常为应用程序一样向DLL项目添加设置。您需要做的就是手动将相关的部分和条目复制到应用程序的app.config中,它将起作用。
然而,仍然没有必要复制DLL的配置文件。它不会被阅读。
答案 3 :(得分:2)
另一种机制是为程序集配置一个单独的配置文件(* .dll.config)。该技术如下所示:http://blog.rodhowarth.com/2009/07/how-to-use-appconfig-file-in-dll-plugin.html
以上,模仿程序集的标准app.config技术。
在我看来,dll配置读取代码应该只存在于相应的dll和单独的类中 - 单一的责任是从* .dll.config中读取配置条目。这是一种以类似于可执行文件可以具有的配置文件(app.config)的方式为程序集配置文件的好方法。