无法加载文件或程序集 log4net
Posted
技术标签:
【中文标题】无法加载文件或程序集 log4net【英文标题】:Could not load file or assembly log4net 【发布时间】:2014-12-22 10:47:15 【问题描述】:我已将log4net
添加到我的项目中,它在我的机器上运行良好,但是当我将我的应用程序的发布版本发送给我的同事时,他收到了这个FileNotFoundException
:
无法加载文件或程序集'log4net,版本=1.2.13.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a'
但奇怪的是,在我的app.config
中,我什至没有使用上述版本的log4net:
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="BizWizard.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</sectionGroup>
【问题讨论】:
看看***.com/questions/8743992/… 可能这就是你的情况所需要的。 @csprabala 我正在尝试进行修复。但为什么它在我的机器上运行良好? 我知道这听起来很愚蠢,但是您是否将 log4net DLL 与您的应用程序一起发送给您的同事? @BerndLinde 是的 log4net.dll 和 log4net.xml 都包含在文件夹中。 两个系统都是64位的吗? (参考here) 【参考方案1】:您是否使用其他第三方库?也许其中一个需要这个特定版本的 log4net。如果是这种情况,可以使用应用程序 app.config 文件中的程序集绑定来解决此问题。
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" />
<codeBase version="1.2.13.0" href="log4netv1.2.13.0\log4net.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
然后将这个 1.2.13.0 版本的 log4net 放在一个名为 log4netv1.2.13.0 的子文件夹中
您也可以尝试使用 bindingRedirect 将所有对 log4net 的引用重定向到特定(您的)版本。 http://msdn.microsoft.com/en-us/library/7wd6ex19(v=vs.110).aspx
【讨论】:
我刚刚降级到 log4net 1.2.0 并开始工作。因为我不是在寻找未来的问题,所以我想我现在会坚持这个。 放一些文件夹,重定向...你在说什么?多年来都使用 nuget 包!他们不能简单地将库放在您想要的文件夹中并解决问题!【参考方案2】:遇到了同样的问题。 LinqToExcel 库使用了不同版本的 log4net。
解决它:
在参考文献中删除旧的 log4net 版本。
转到工具、Nuget 包管理器、包管理器控制台。
运行:
安装包 log4net -Version 2.0.3
更多细节在这里:
https://www.nuget.org/packages/log4net/2.0.3
【讨论】:
这个问题是,当其他东西依赖于新版本时:(以上是关于无法加载文件或程序集 log4net的主要内容,如果未能解决你的问题,请参考以下文章
Word VSTO 4.0 插件无法加载:无法加载文件或程序集