将App.config应用于我的DLL程序集?

时间:2010-07-15 13:16:13

标签: c# dll configuration

我正在编写一个类库作为抽象,用于登录我编写的任何应用程序,服务等。我通过使其非常可配置以满足我对大多数应用程序/服务日志记录方案的需求而使其变得非常强大。

该配置旨在指定以下内容:

  • 要编写的日志记录级别
  • 写入所有级别的一个日志文件
  • 每个级别写入单独的文件
  • 记录截止(周期性,应用事件,字节大小受限)
  • 日志文件过期(在文件使用期限后删除日志文件)
  • 以平面文字或XML格式撰写
  • 日志文件名格式规范
  • 是否在文件名前加上日期
  • 父应用程序的名称
  • 等等等...

我已经阅读了一些关于DLL程序集配置的其他stackoverflow问题,它导致托管程序集/ app的app.config之间发生冲突。我相信我的程序集只是提供配置文件。

这是一个很好的场景吗?将我自己的配置烘焙到我的项目中以便我的记录器从XML文件中读取以检索配置值可能是一个更好的主意吗?

4 个答案:

答案 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)的方式为程序集配置文件的好方法。