尝试加载log4net程序集时引发错误

尝试加载log4net程序集时引发错误,log4net,Log4net,我正在尝试构建使用LinqToExcel库的项目。另外,我正在使用log4net来编写日志 我的问题始于我尝试运行以下代码行时: var excel = new ExcelQueryFactory(ExcelPath); return (from r in excel.Worksheet<RowDetails>(company.Name) select r).Count(); 此行引发异常: 错误MyProj.Program Main:System.IO.FileL

我正在尝试构建使用LinqToExcel库的项目。另外,我正在使用log4net来编写日志

我的问题始于我尝试运行以下代码行时:

var excel = new ExcelQueryFactory(ExcelPath);
return (from r in excel.Worksheet<RowDetails>(company.Name)
        select r).Count();
此行引发异常:

错误MyProj.Program Main:System.IO.FileLoadException:无法加载 文件或程序集的log4net,版本=1.2.11.0,区域性=neutral, PublicKeyToken=669e0ddf0bb1aa2a'或其依赖项之一。这个 定位程序集的清单定义与程序集不匹配 参考来自HRESULT的异常:0x8013100文件名:“log4net, 版本=1.2.11.0,区域性=中性,PublicKeyToken=669e0ddf0bb1aa2a'

需要注意的是,在这一行之前,我成功地使用了log4net

我将感谢任何帮助


非常感谢

正如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>

尝试使用nuget安装它

Install-Package log4net -Version 2.0.0

版本2.0.0适用于log4net 1.2.11,我也遇到了类似的问题。我认为问题在于LinqtoExcel引用Log4Net版本1.2.11,您已经单独引用了Log4Net,并且获得了最新的1.2.13版本。在构建输出中,您将得到1.2.13,当LintoExcel调用Log4Net时,它预期会出现1.2.11和错误。通过NuGet升级Log4Net后,我遇到了这个问题,但发现新版本是用不同的密钥签名的


您可以从中获取“oldkey”版本,然后它就为我工作了。

看起来好像您正在加载不同版本的log4net程序集。可能是因为您的文件系统中有几个log4net.dll,而错误的log4net.dll被加载了吗?我也有同样的问题;签名与我的部署项目中的匹配,dll部署在与我的程序集相同的目录中,但我收到此错误。不管怎样,第一部分。1.2.11+有两种风格,旧键和新键。您似乎需要新键的风格。。。