在2012年与恼人的log4net程序集参考问题

时间:2013-09-20 02:21:51

标签: c# .net visual-studio-2012 log4net

获取以下构建错误。

  

错误15未知的构建错误,'无法加载文件或程序集   'log4net,版本= 1.2。 11 .0,文化=中立,   PublicKeyToken = 669e0ddf0bb1aa2a '或其中一个依赖项。该   找到程序集的清单定义与程序集不匹配   参考。 (HRESULT异常:0x80131040)'

我不知道怎么回事。 我尝试使用GUI作为参考,它没有帮助。已经花费了1.5个小时,问题仍然存在。

我现在直接转到项目文件,对log4net的唯一引用如下:

<Reference Include="log4net, Version=1.2.12.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\ExternalDlls\.NET 4.0\log4net.dll</HintPath>
</Reference>

我仍然收到此错误。为什么甚至提到V1.2。 11

提前致谢

4 个答案:

答案 0 :(得分:3)

好的,最后还是有了构建工作。

我浏览了所有其他项目并执行了 Resharper - 删除未使用的引用操作。

完成后,项目开始构建。

答案 1 :(得分:1)

您可以查看路径 .... \ ExternalDlls.NET 4.0 \ log4net.dll 中实际存在的版本,并查看 GAC 中的版本。

删除GAC中的版本,从项目文件中删除以下引用,然后从 ExternalDlls 文件夹中再次添加

<Reference Include="log4net, Version=1.2.12.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\ExternalDlls\.NET 4.0\log4net.dll</HintPath>
</Reference>

答案 2 :(得分:1)

如果要创建引用log4net的nuget包,请确保您的nuspec文件指定了正确的log4net版本(这是我在log4net发布新版本后遇到的问题)。并确保如果您不想使用最新版本的log4net,则使用“[”和“]”封装您的版本,以便它不会获得最新版本。看到这个.. http://docs.nuget.org/docs/reference/versioning#Specifying_Version_Ranges_in_.nuspec_Files

希望这有助于某人。

答案 3 :(得分:0)

我今天面对这个问题。为了解决这个问题,我通过visual studio删除了Bin文件夹中的log4net.dll文件引用。并重建网站。 它会自动获取log4net dll。这解决了问题。此问题的原因是通过visual studio的Reference绑定可能与实际文件版本无关。