首页 文章

当我尝试加载log4net程序集时抛出错误

提问于
浏览
10

我正在尝试构建使用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,Version = 1.2.11.0,Culture = neutral,PublicKeyToken = 669e0ddf0bb1aa2a'或其依赖项之一 . 定位的程序集的清单定义与程序集引用不匹配 . (来自HRESULT的异常:0x80131040)文件名:'log4net,Version = 1.2.11.0,Culture = neutral,PublicKeyToken = 669e0ddf0bb1aa2a'

重要的是要注意我在此行之前使用log4net是成功的 .

我将不胜感激任何帮助 .

十分感谢!

4 回答

  • 1

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

    尝试使用nuget安装它

    Install-Package log4net -Version 2.0.0
    

    版本2.0.0适用于log4net 1.2.11

  • 6

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

  • 7

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

    您可以从the apache log4net site获取'oldkey'版本,然后它对我有效 .

相关问题