.NET - 使用类库存储 App.config 文件

3
这似乎是互联网上经常被问到的问题,但是到目前为止我的研究还没有找到解决方案。(而且,至少目前为止,我没有接受“无法完成”作为解决方案。)
简单来说,我正在尝试做的是在.NET类库项目中拥有一个配置文件,该文件在引用它的任何应用程序中都可用于该类库。我的设置可以简化为共享一些域逻辑的3个WCF服务。它们共享的其中之一是注入的日志记录器依赖项。在这种情况下,我有一个单独的库来实现日志记录器(这个库是被注入的),使用log4net。
在这种设置中,每个3个服务都有自己的配置文件,并且每个配置文件都需要配置log4net。我要做的是完全将log4net抽象成单独的库,以便这些3个服务(以及未来的服务/应用程序,其中将会有很多)不必携带该配置。它们都将以相同的方式进行配置,因此我宁愿将其放在一个地方。
到目前为止,我已经找到了一些代码,可以允许一个本地化的appsetttings(键/值对)配置文件,并且我可以访问它。但我正在寻找更完整的配置文件方法。Log4net有一个自定义配置部分,不仅是键/值对。(其他配置部分也将在多个应用程序中使用,例如由客户端应用程序用于连接到WCF服务的通用库中的system.serviceModel部分)。
这有意义吗?有人之前解决过这种问题吗?
1个回答

2

如果是类库,你不能像可执行文件那样使用.config文件!但是,类库当然可以读取和写入xml文件,所以你可以在一定程度上模拟它。 这篇 CodeProject文章描述了一种方法,我不会惊讶地发现还有其他类似的解决方案,因为正如你所说的那样,这是一个常见的问题。


我认为我将在这种方法中面临的问题(尽管至少值得一试)将与内置配置部分有关。我的意思是,看起来我将无法使用system.serviceModel,而是必须自己编写代码。也许通过足够的编码,我可以从手动创建的配置中手动创建服务实例。但是,在第三方库(例如log4net)中,这种方法似乎会不足。除非我漏掉了什么。 - David
@David:我并没有太多使用Log4Net的经验,但有其他人遇到了相同的问题,这里有一个关于如何在没有配置文件的情况下使用Log4Net的讨论 http://osdir.com/ml/windows.dotnet.log4net.user/2004-03/msg00004.html,还有一个解决方案似乎是让配置文件链接到一个特殊的log4net配置文件http://www.mail-archive.com/log4net-user@logging.apache.org/msg03709.html, 或许对你有帮助。 - Hans Olsson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接