我尝试构建使用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:无法加载 文件或程序集&#39; log4net,版本= 1.2.11.0,文化=中立, 公钥= 669e0ddf0bb1aa2a&#39;或其中一个依赖项。该 定位程序集的清单定义与程序集不匹配 参考。 (HRESULT异常:0x80131040)文件名:&#39; log4net, Version = 1.2.11.0,Culture = neutral,PublicKeyToken = 669e0ddf0bb1aa2a&#39;
值得注意的是,我在此行之前成功使用了log4net。
我将不胜感激。
非常感谢!
答案 0 :(得分: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>
答案 1 :(得分:6)
尝试使用nuget
安装它Install-Package log4net -Version 2.0.0
版本2.0.0适用于log4net 1.2.11
答案 2 :(得分:1)
我遇到了类似的问题。我认为问题出在LinqtoExcel引用Log4Net 1.2.11版本,并且您已经引用了Log4Net,并获得了最新的1.2.13版本。在构建输出中,你最终会得到1.2.13,当LintoExcel调用Log4Net时,它预计会出现1.2.11并且出现错误。
答案 3 :(得分:0)
我在通过NuGet升级log4net之后遇到了这个问题,却发现新版本是用不同的密钥签名的。
你可以从the apache log4net site获取'oldkey'版本,然后它对我有效。