10

I'm try to build project that use LinqToExcel library. Additionally, I'm use log4net to write logs.

My problem started when I'm tryomg to run this lines of code:

var excel = new ExcelQueryFactory(ExcelPath);
return (from r in excel.Worksheet<RowDetails>(company.Name)
        select r).Count();

This line thrown exception:

ERROR MyProj.Program Main:System.IO.FileLoadException: Could not load file or assembly 'log4net, Version=1.2.11.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) File name: 'log4net, Version=1.2.11.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a'

It's important to note that I'm successful to use log4net before this line.

I would appreciate any help.

Thanks a lots!

4

4 回答 4

7

正如 marc_s 所指出的,当尝试加载同一程序集的不同版本时,通常会出现此问题。确保您的项目使用与 LinqToExcel 库相同的程序集版本,该库也依赖于 log4net。任何其他库也应该使用相同的程序集版本。要解决此问题,您还可以尝试在 app.config 中使用程序集重定向,如下所示:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" />
        <bindingRedirect oldVersion="1.2.10.0" newVersion="1.2.11.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
于 2012-05-29T12:48:58.227 回答
6

尝试使用 nuget 安装它

Install-Package log4net -Version 2.0.0

2.0.0 版适用于 log4net 1.2.11

于 2013-10-14T19:00:25.330 回答
1

我有类似的问题。我认为问题出在 LinqtoExcel 引用 Log4Net 版本 1.2.11,并且您已经单独引用了 Log4Net 并且您获得了最新的 1.2.13 版本。在构建输出中,您最终会得到 1.2.13,当 LintoExcel 调用 Log4Net 时,它预计会出现 1.2.11 和错误。

于 2014-07-11T14:23:32.643 回答
0

我在通过 NuGet 升级 log4net 后遇到了这个问题,却发现新版本是用不同的密钥签名的。

您可以从apache log4net 站点获取“oldkey”版本,然后它对我有用。

于 2016-05-09T08:39:27.147 回答