我遇到了问题,不知道最好的步骤是什么。
我的问题如下:我在VS13中创建了不同的项目。其中一个是Log项目(使用NuGet安装的外部库Log4net)。
现在我想在其他项目中使用该项目......但每次我引用该项目时都会出现以下错误:
错误29“log4net.ILog”类型在未引用的程序集中定义。您必须添加对程序集'log4net,Version = 1.2.13.0,Culture = neutral,PublicKeyToken = 669e0ddf0bb1aa2a'的引用。
我知道如何解决这个问题?
提前致谢。
答案 0 :(得分:4)
当使用log4net的程序集也公开来自log4net的类型时,通常会发生这种情况。在这种情况下,消耗组件需要两个程序集的引用..使用log4net的引用和对log4net的引用。
您需要添加对log4net的引用或完全抽象出类型,以便程序集在内部处理log4net类型。
e.g。如果我有一个项目LogHelper,它有两个方法:
Log(MyOwnLogType my)和Log(log4net.ILog log)。
调用者可能只使用Log(MyOwnLogType),但仍需要从整体角度解析log4net.ILog的类型。因此,请确保通过帮助程序组件将任何此类类型泄漏到呼叫者中。
答案 1 :(得分:1)
听起来,引用log4net的项目在public / internal
API中公开了其中一种类型。为了引用该项目,新项目必须能够解析这些类型的令牌,因此也需要引用log4net。
要解决此问题,只需使用NuGet将log4net(当然匹配版本)的引用添加到新项目中。