2014-10-27 31 views
8

我已經加入log4net到我的項目,它是工作在我的機器就好了,但是當我把我的應用程序的發佈版本,我的同事,他收到這個FileNotFoundException無法加載文件或程序的log4net

無法加載文件或程序集「log4net的,版本= 1.2.13.0, 文化=中性公鑰= 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> 
+0

看http://stackoverflow.com/questions/8743992/how-do-i-work-around-log4net-keeping-changing-publickeytoken可能這就是你的情況所需要的。 – csprabala 2014-10-27 09:33:27

+0

@csprabala我正在嘗試修復。但爲什麼它在我的機器上正常工作? – Disasterkid 2014-10-27 09:40:25

+0

我知道這聽起來很愚蠢,但是您是否將log4net DLL與您的應用程序一起發送給您的同事? – 2014-10-27 09:40:47

回答

6

您是否使用其他第三方庫?也許其中一個需要這個特定版本的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

您也可以嘗試重定向所有引用log4net的一個特定的(你的)版本使用bindingRedirect。 http://msdn.microsoft.com/en-us/library/7wd6ex19(v=vs.110).aspx

+1

我剛降級到log4net 1.2.0,它開始工作。既然我不是在尋找未來的問題,我想現在我會堅持下去。 – Disasterkid 2014-10-27 11:36:25

+0

放一些文件夾,重定向...你在說什麼?所有使用nuget包多年!他們不能簡單地把庫放在你想要的文件夾中,然後解決問題! – 2017-04-07 13:58:08

2

出現同樣的問題。 LinqToExcel庫使用的是不同版本的log4net。

要解決這個問題:

  • 的引用刪除舊版本log4net的。

  • 轉到工具,Nuget數據包管理器,程序包管理器控制檯。

  • 運行:

安裝,包裝log4net的-Version 2.0.3

更多細節在這裏:

https://www.nuget.org/packages/log4net/2.0.3

相關問題