【发布时间】:2019-03-13 13:52:19
【问题描述】:
我正在使用 Visual Studio 2017 构建一个大型 C# 项目(解决方案中有 200 多个项目)。在编译其中一个项目时,我遇到了很多错误,如下所示:
error CS0012: The type 'BufferingAppenderSkeleton' is defined in an assembly that is not referenced. You must add a reference to assembly 'log4net, Version=1.2.11.0, Culture=neutral, PublicKeyToken=1b44e1d426115821'.
然而,有问题的项目确实引用了 log4net 1.2.11。唯一可疑的是在 log4net 的包路径中找到的 net40-full:“C:\XXXX\Src\packages\log4net.1.2.11\lib\net40-full\log4net .dll"
在项目的 package.config 中,它包含这一行:
<package id="log4net" version="1.2.11" targetFramework="net461" />
在它的 app.config 中,它包含这一行:
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-1.2.11.0" newVersion="1.2.11.0"/>
</dependentAssembly>
不知道是不是 .net 版本(4.0 与 4.61)不匹配导致了编译错误?
C# 不是我的主要专业领域,但我的理解是 nuget 会查看这些配置文件以下载所需的包,在本例中为 log4net。那它怎么下载的是4.0版本而不是4.6.1的呢?
【问题讨论】:
-
可能它给了你这个问题,因为用于 log4net 版本 1.2.11 的 NuGet 不再存在。您应该将其至少升级到 2.0.0 版本(仍然具有 1.2.11.0 版本的 dll,但 publicKeyToken 不同)。
标签: c# visual-studio nuget log4net