2013-05-27 98 views
8

我有一個Wpf.net 4.0 C#項目,我嘗試從使用Log4Net遷移到使用NLog作爲Common.LoggingFaçade背後的日誌記錄庫。 我原本以爲這是一件容易的事,但你知道他們說什麼,沒有什麼是容易的。通用日誌記錄無法加載類型NLog.TargetWithLayout

我曾經用過的NuGet到:

  • 下載NLOG在2.0.1.2版本。
  • 從版本2.0.0下載Common.Logging.NLog。
  • 從版本2.1.2下載Common.Logging.NLog20。
  • 使用NuGet更新了從2.0.0版到2.1.2版的通用日誌記錄。

在app.config文件我有:

<common> 
    <logging> 
     <factoryAdapter type="Common.Logging.NLog.NLogLoggerFactoryAdapter, Common.Logging.NLog"> 
      <arg key="configType" value="FILE" /> 
      <arg key="configFile" value="~/NLog.config" /> 
     </factoryAdapter> 
    </logging> 
</common> 

......還有......

<dependentAssembly> 
    <assemblyIdentity name="NLog" publicKeyToken="5120e14c03d0593c" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-2.0.1.0" newVersion="2.0.1.0" /> 
    </dependentAssembly> 

當我運行應用程序,我得到一個錯誤,說明

'類型'NameSpace.Shell.AppBootstrapper'中與指定的綁定約束匹配的構造函數的調用引發了一個異常。'行號「8」和行位置「18」。

內部異常是:

{「無法加載所請求的類型的一個或多個檢索 LoaderExceptions屬性的更多信息。。」}

所述裝料外,還有是一個唯一的,是:

{「無法加載從組件類型 'NLog.TargetWithLayout'「NLOG, 版本= 2.0.1.0,崇拜URE =中性, 公鑰= 5120e14c03d0593c」。 「:」 NLog.TargetWithLayout「}

有沒有人解決這個問題還是有一個變通得到NLog working with Common.Logging

爲了不發表很長的問題我沒有包括NLog.config文件,但我可以,如果這將是有益的。

回答

15

在我問了這個問題之後,在我問了很多問題之後,我甚至問了很多問題。我試圖嘗試各種各樣的東西,並希望他們可以工作。

我發現那是什麼,我用的是Common.Logging.NLog.NLogLoggerFactoryAdapter使用從Common.Logging.Nlog DLL到來,該DLL有refrence到NLog 1.0.0.505它採用了NLog.TargetWithLayout類的老位置。

我用NuGet刪除了Common.Logging.Nlog包,並更改了應用程序中的引用。配置文件:

<factoryAdapter type="Common.Logging.NLog.NLogLoggerFactoryAdapter, Common.Logging.NLog20"> 

這然後使用它在NLog 2.0.1.2包中,並允許NLOG正確的類,並且應用程序啓動。

我希望這可以幫助任何人解決這個問題。我找不到其他人記錄如何處理它。

2

也許你已經安裝了Common.Logging.NLog NuGet包而不是Common.Logging.Nlog20。 檢查您的nuget參考,因爲CL的版本2和NLog的版本2,它可能會被混淆。你顯然有CL的版本2,但是NLog版本1的NLogLoggerFactoryAdapter。

+0

這聽起來正確。這幾乎是我在上面的答案中所說的。 – Klee

+0

我已經知道發生了什麼事。看到這裏https://github.com/net-commons/common-logging/issues/23#issuecomment-23339522 – skalinkin

相關問題