我正在开发一个项目,其中包括UmbracoCms NuGet包,它在内部使用log4net框架版本1.2.11来执行日志记录。现在我们要添加另一个依赖于log4net 1.2.15的包(SharpRaven.Log4Net)。只安装第二个NuGet包会产生异常:
Could not load file or assembly 'log4net, Version=1.2.11.0, Culture=neutral,
PublicKeyToken=null' or one of its dependencies. The located assembly's
manifest definition does not match the assembly reference. (Exception from
HRESULT: 0x80131040)
这显然是因为Umbraco引用了1.2.11版本,我的项目现在引用了1.2.15版本,但我该如何解决这个问题呢?我不能:
我真的没有看到任何其他选项,所以任何帮助都会受到赞赏。
更新以澄清为何不是3158928的重复问题
我想强调的是,这里的问题是NuGet包引用的log4net程序集的PublicKeyToken为null
。此处发布的早期问题Referencing 2 different versions of log4net in the same solution有一些很好的答案,但没有这个问题,因此没有回答这个问题。
答案 0 :(得分:0)
您可以按照此awnser:
并排运行log4net版本基本上,您为每个版本创建一个文件夹,然后将其绑定在您的配置中:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="681549d62126b7b8" />
<codeBase version="1.2.9.0" href="log4netv1.2.9.0\log4net.dll" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821" />
<codeBase version="1.2.10.0" href="log4netv1.2.10.0\log4net.dll" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" />
<codeBase version="1.2.11.0" href="log4net.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>