Visual Studio 2013项目引用了另一个带有外部库的项目

时间:2014-03-20 17:37:44

标签: c# .net reference visual-studio-2013

我遇到了问题,不知道最好的步骤是什么。

我的问题如下:我在VS13中创建了不同的项目。其中一个是Log项目(使用NuGet安装的外部库Log4net)。

现在我想在其他项目中使用该项目......但每次我引用该项目时都会出现以下错误:

错误29“log4net.ILog”类型在未引用的程序集中定义。您必须添加对程序集'log4net,Version = 1.2.13.0,Culture = neutral,PublicKeyToken = 669e0ddf0bb1aa2a'的引用。

我知道如何解决这个问题?

提前致谢。

2 个答案:

答案 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(当然匹配版本)的引用添加到新项目中。