(很抱歉可能是一个琐碎的问题,我来自Java和Maven,仍然没有理解C#依赖关系)
我想在所有项目中使用log4net。由于我不想将dll添加到所有项目中,我创建了一个“全局”项目,在其中添加了对log4net.dll的引用,并从所有其他项目引用“全局”项目。
但是,我似乎无法从任何其他项目访问log4net类。
using Globals.log4net;
似乎也不起作用。
我做错了什么?
很抱歉,那不是它的工作方式。您必须将DLL添加到您想要从中调用它的所有项目中。
如果您只使用DLL中的几个函数,您可以在全局项目中创建函数来调用它。
log4net并不是只通过引用就能在Globals中使用。
我的第一反应是让所有项目都引用log4net,这样就清楚了有一个依赖关系,不需要隐藏在另一个项目中。
然而,如果您的类之间有共享的通用逻辑,您可以创建一个“全局”或“公共”类,其中包括对共享库的引用。要引用这些库,只需添加目标命名空间的using语句即可。
换句话说,无论引用是在同一项目中还是在另一个引用项目中,using语句都将是相同的。
对于log4net,我认为应该只是:
using log4net;
Logger
),然后使用“CTRL+.”或展开辅助菜单,这将提供添加适当using语句的选项。请注意保留HTML标签。那个系统行不通。你需要将log4net dll添加为所有项目的引用。或者创建代理类,这需要更多的工作。
了解一下GAC(全局程序集缓存),这是一个中央存储库,用于共享跨项目的DLL...这就是我放置log4net DLL的地方。然后,您可以在.config文件中为每个需要使用它的项目简单地添加对它的引用,而无需将DLL添加到项目本身中。
这是一个很好的起点:MSDN: 使用全局程序集缓存