(抱歉,这可能是一个微不足道的问题,我来自Java& Maven,仍然没有把我的思想包裹在C#依赖项中)
我想在所有项目中使用log4net。由于我不想将dll添加到所有项目中,因此我创建了一个“Globals”项目,在其中添加对log4net.dll的引用,并将所有其他项目引用到“Globals”项目。
但是,我似乎无法从任何其他项目访问log4net类。
using Globals.log4net;
似乎也不起作用。
我做错了什么?
答案 0 :(得分:3)
如果您所做的只是引用了DLL,那么您所做的就是在每次引用Globals
项目时获取DLL的副本。您仍然没有使用库。
我通常会创建一个ILogger
接口,使用Globals
项目中的log4net实现它,并在其他项目中使用该实现(以及测试的模拟实现)。
答案 1 :(得分:2)
我担心这不是它的工作方式。 您必须将DLL添加到要从中调用它的所有项目。
如果你只在DLL中使用了几个函数,你可以在Globals项目中创建函数来调用它。
答案 2 :(得分:2)
log4net不仅仅通过引用在Globals中“生效”。
我的第一个倾向是让你的所有项目都引用log4net,它澄清了依赖,不需要在另一个项目中隐藏它。
但是,如果您的类之间共享共享逻辑,则可以使用“全局”或“公共”类,其中包括对共享库的引用。要引用这些库,只需添加目标命名空间的使用。
换句话说,无论引用是在同一个项目还是另一个引用项目中,using语句都是相同的。
对于log4net我相信它应该只是:
using log4net;
添加正确引用的另一种方法是在代码中键入其中一个类名(Logger
?),然后使用“CTRL +”调用帮助程序菜单。或者通过简单地扩展它,可以选择添加正确的using语句。
答案 3 :(得分:0)
该系统不起作用。您必须添加log4net dll作为所有项目的参考。或者创建代理类,这是更多的工作。
答案 4 :(得分:0)
阅读GAC(全局程序集缓存),这是一个跨项目共享的DLL的中央存储...这就是我放置log4net DLL的地方。然后,您只需在.config文件forevery项目中添加对它的引用即可,无需将DLL添加到项目本身。