Gemeinsame Protokollierung konnte nicht geladen werden NLog.TargetWithLayout

8

Ich habe ein Wpf .net 4.0 C # -Projekt, das ich von Log4Net migrieren möchte, um NLog als Protokollierungsbibliothek hinter der Common.Logging-Fassade zu verwenden. Ich hatte erwartet, dass dies eine leichte Aufgabe ist, aber Sie wissen, was sie sagen, Nichts ist jemals einfach.

Ich habe NuGet verwendet, um:

  • Laden Sie NLog bei Version 2.0.1.2 herunter.
  • Laden Sie Common.Logging.NLog bei Version 2.0.0 herunter.
  • Laden Sie Common.Logging.NLog20 in Version 2.1.2 herunter.
  • Aktualisierung der allgemeinen Protokollierung von Version 2.0.0 auf Version 2.1.2 mit NuGet.

In der Datei app.config habe ich:

%Vor%

... und ...

%Vor%

Wenn ich die Anwendung starte, bekomme ich eine Fehlermeldung mit

'Der Aufruf des Konstruktors für den Typ' NameSpace.Shell.AppBootstrapper ', der den angegebenen Bindungseinschränkungen entspricht, hat eine Ausnahme ausgelöst.' Zeilennummer '8' und Zeilenposition '18'.

Die innere Ausnahme ist:

  

{"Kann einen oder mehrere der angeforderten Typen nicht laden. Abrufen des   LoaderExceptions-Eigenschaft für weitere Informationen. "}

Die Loader-Ausnahme, es gibt nur eine, ist:

  

{"NLog.TargetWithLayout 'aus Baugruppe NLog konnte nicht geladen werden,   Version = 2.0.1.0, Kultur = neutral,   PublicKeyToken = 5120e14c03d0593c '. ":" NLog.TargetWithLayout "}

Hat jemand dieses Problem überwunden oder muss er arbeiten, um NLog working with Common.Logging zu bekommen?

Im Interesse, nicht zu lange eine Frage zu posten, habe ich die NLog.config Datei nicht eingeschlossen, aber ich kann, wenn es vorteilhaft wäre.

    
Klee 27.05.2013, 04:30
quelle

2 Antworten

15

Nachdem ich mich viel umgesehen habe, nachdem ich diese Frage gestellt habe, und ich habe viele Suchen gemacht, bevor ich überhaupt diese Frage gestellt habe. Ich habe versucht, verschiedene Dinge auszuprobieren und hoffe, dass sie funktionieren könnten.

Was ich gefunden habe, war, dass das Common.Logging.NLog.NLogLoggerFactoryAdapter , das ich verwendete, von der Common.Logging.Nlog dll kam und dass dll eine Referenz zu NLog 1.0.0.505 hat, die die alte Position für die NLog.TargetWithLayout -Klasse verwendet.

Ich habe das Paket Common.Logging.Nlog mit NuGet entfernt und den Verweis in der app.config-Datei in

geändert %Vor%

Dies verwendet dann die korrekte Klasse, die im Paket NLog 2.0.1.2 gefunden wird, und erlaubt NLog und die Anwendung zum Hochfahren.

Ich hoffe, das hilft jedem anderen, der über dieses Problem stolpert. Ich konnte niemanden finden, der dokumentierte, wie man damit umgeht.

    
Klee 28.05.2013, 01:59
quelle
2

Wahrscheinlich haben Sie das Common.Logging.NLog NuGet-Paket anstelle von Common.Logging.Nlog20 installiert. Überprüfen Sie Ihre Nugget-Referenz, die aufgrund von Version 2 von CL und Version 2 von NLog verwechselt werden kann. Was Sie anscheinend haben, ist Version 2 von CL, aber NLogLoggerFactoryAdapter für NLog Version 1.

    
skalinkin 27.08.2013 13:43
quelle

Tags und Links