C# 第三方库引用不同版本的log4net.dll

C# 第三方库引用不同版本的log4net.dll,c#,log4net,C#,Log4net,我有两个对我的应用程序至关重要的库,它们依赖于不同版本的log4net.dll。尝试my bin文件夹中的两个dll,在调用我正在使用的第三方文件时会出现常见错误: 无法加载文件或程序集“log4net,Version=1.2.10.0,Culture=neutral,PublicKeyToken=1b44e1d426115821”或其依赖项之一。定位的程序集清单定义与程序集引用不匹配。(来自HRESULT的异常:0x8013100) 有没有一种方法可以让应用程序同时引用两个dll?第三方dll

我有两个对我的应用程序至关重要的库,它们依赖于不同版本的log4net.dll。尝试my bin文件夹中的两个dll,在调用我正在使用的第三方文件时会出现常见错误:

无法加载文件或程序集“log4net,Version=1.2.10.0,Culture=neutral,PublicKeyToken=1b44e1d426115821”或其依赖项之一。定位的程序集清单定义与程序集引用不匹配。(来自HRESULT的异常:0x8013100)


有没有一种方法可以让应用程序同时引用两个dll?第三方dll是Windsor的IOC容器和Paypal的API,两者对该应用程序都至关重要。

这个问题可能有一些答案对您有所帮助

或者,如果Windsor的日志记录设施依赖于log4net而不是Windsor本身,那么您可以基于PayPal API使用的log4net版本编写自己的log4net抽象,并告诉Windsor使用它

以下是log4net抽象在Castle源代码存储库中的位置:

我不使用Castle,所以我无法告诉您如何配置它以引用您自己的log4net抽象,但我打赌这并不太难(假设它是可能的)

这里是另一篇文章的链接,介绍了如何使用log4net配置Castle。它还简要介绍了如何编写自定义日志记录工具:


祝你好运

我认为另一条路要走,但我自己从来没有这样做过,那就是把它们放进GAC

我相信您可以在GAC中拥有同一dll的不同版本,您应该可以


但我也可能是疯了:)

我在这里有点冒险,但我认为即使不拥有代码,也可以合并程序集,这将解决这个问题。谢谢,第一个链接成功了!通过删除对log4net.dll的所有项目引用,而不是使用app/web.config创建对不同版本的运行时引用,应用程序能够找到这两个dll,而不会抱怨不匹配。有关详细信息,请参阅wageoghe的“在同一解决方案中引用两个不同版本的log4net”链接。是的,您可以,但这不是一个优雅的解决方案。您遇到了一个可伸缩性问题,因为您必须为此在每台机器上执行GAC安装。将其放入.config中,可以将其与应用程序一起部署。