Quartz.net und Common.Logging - Mit Log4Net
-
19-09-2019 - |
Frage
Ich verwende Quartz.net in einem Windows-Dienst. Derzeit wird der Trigger nicht ausgelöst -. Ich die Protokollierung verwenden möchte herausfinden, warum
Ich habe meine Config-Datei für den Windows-Dienst bearbeitet:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
</configSections>
<appSettings>
<!--specific win service settings here-->
</appSettings>
<common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
<arg key="configType" value="INLINE"/>
<arg key="configFile" value="c:\sched.log"/>
<arg key="level" value="INFO" />
</factoryAdapter>
</logging>
</common>
<log4net>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d [%t] %-5p %l - %m%n" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="EventLogAppender" />
</root>
</log4net>
Meine Dateistruktur ist wie folgt:
C: \ Company - root dir für alle Projekte
C: \ Company \ build \ bin - Ausgabeverzeichnis für alle Projekte / Klassenbibliotheken in meiner Lösung
C: \ Company \ lib - Wo 3rd-Party-Binärdateien / DLLs setzen
In meinem Windows-Projekt habe ich einen Verweis auf Quartz (im Verzeichnis C: \ Company \ lib-Ordner)
Ich habe auch einen Verweis auf Common.Logging.Log4net.dll
hinzugefügtWenn ich meine App testen, ich die folgende Fehlermeldung erhalten:
Datei konnte nicht geladen werden oder Montage ‚Common.Logging, Version = 2.0.0.0, Kultur = neutral, PublicKeyToken = af08829b84f0328e‘oder eine ihrer Abhängigkeiten. das liegt Assembly manifest Definition tut entspricht die Montagereferenz nicht. (Ausnahme von HRESULT: 0x80131040) ":" Common.Logging, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = af08829b84f0328e
Lösung
Ich denke, man könnte die falsche Version von Common.Logging hat. Die aktuelle Version von Quartz.Net verwendet die Common.Logging Version 1.2, nicht 2.0. Wenn Sie 2.0 verwenden müssen, versuchen entweder neu zu kompilieren quartz.net mit der Version 2.0 von gemeinsamer Protokollierung oder try die Montage stattdessen umgeleitet wird.
Andere Tipps
Verwenden Sie diesen Beitrag die Anordnung debuggen Laden, um zu sehen, ob Sie die Ursache für die Diskrepanz genau bestimmen können.