我确信我们无法使用1.2.9.0版本重建我们的源代码,因为有太多其他依赖项并且需要很多努力。有没有其他方法可以解决这个问题?我不是在寻找与CLR组件装载有关的太复杂,但会非常愉快地听到它们。我正在寻找最简单的方法。我想有人遇到了同样的问题。
EDITED : 如果有人有兴趣我就创建了博客帖子: http://andriybuday.blogspot.com/2010/10/log4net-versions-deployment-issue.html
EDITED2 :所以,这个编辑不是答案,但它代表了这个故事的意外结束。我刚从博客文章中复制了它。
这个故事的有趣 - 快乐结束
你知道这一切最有趣吗?它是如何完成的。我们联系了那些开发我们现在应该使用的组件的人。他们告诉我们,他们遇到了更新log4net 1.2.10.0的动态配置文件的问题。按照他们的说法,新版本的log4net无法做到这一点。因此,他们发送了简单的应用程序来演示这一点,事实上,在应用程序运行时更新配置后,1.2.10.0没有赶上新配置,但1.2.9.0工作得很好。这让我非常惊讶,所以我去了这个下载页面并下载了最新的二进制文件。当我尝试它开始工作!实际上我猜他们只是使用log4net buit的版本来引用.net framework 1.1,我们应该使用一个内置的.net 2.0(是的!实际上如果你下载就会看到。)
在完成所有这些之后,他们特别为我们创建了他们的源的新子版本,他们能够修复一些小错误。好消息!意外的故事结束! :)
答案 0 :(得分:2)
建议的方法是将两个版本的log4net安装到全局程序集缓存(GAC)中。
但是,如果您无法更改从单个文件夹加载所有程序集的要求,则最简单的方法是重命名项目使用的log4net副本并引用重命名的版本。
答案 1 :(得分:2)
我不知道两个版本之间的变化是什么(我们自己使用1.2.10.0),但如果接口没有改变,那么你可以尝试将程序集重定向到更新的版本:
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="log4net"
publicKeyToken="b32731d11ce58905"
culture="neutral" />
<bindingRedirect oldVersion="1.2.9.0"
newVersion="1.2.10.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
确保密钥与我提供的密钥相同,因为它们可能在两者之间发生了变化。
http://msdn.microsoft.com/en-us/library/7wd6ex19(VS.71).aspx