我有一个项目
输出显示以下错误:
Common
,其中包含一个log4net自定义appender。我在所有其他项目中引用该项目,并在app.config
中配置log4net appender。一切都很顺利,只有一个项目在尝试实例化Appender时失败。输出显示以下错误:
System.TypeLoadException: 无法加载类型[Common.Appenders.MyCustomAppender]。 尝试装配[log4net, Version=1.2.11.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a]和所有已装载的程序集 at log4net.Util.SystemInfo.GetTypeFromString(Assembly relativeAssembly, String typeName, Boolean throwOnError, Boolean ignoreCase) at log4net.Util.SystemInfo.GetTypeFromString(String typeName, Boolean throwOnError, Boolean ignoreCase) at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlElement appenderElement) log4net: ERROR找不到名为[MyCustomAppender]的Appender。log4net配置对于所有项目都是相同的。
app.config
包含:<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="MyCustomAppender" type="Common.Appenders.MyCustomAppender">
<file value="log.txt" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="MyCustomAppender" />
</root>
</log4net>
</configuration>
我通过代码调用 log4net.Config.XmlConfigurator.Configure()
。如果在调用log4net之前使用 Assembly.Load("Common")
手动加载程序集,则一切正常。
有什么想法,为什么当通过反射实例化MyCustomAppender
时程序集未被加载?我该如何解决这个问题?
, Common
。我个人很快就厌倦了没有调试器的 xml 编程语言,并且只是在代码中进行配置。 - Hans Passant