以下是完整的故事: 我正在尝试为log4net实现自定义appender。那个appender曾经和App.config在同一个项目中,一切都运行得很好,但现在我把它移到了我引用的另一个项目(类库)中。我的共享项目的名称是Lib,我的appender包含在Lib名称空间中,所以我这样引用它:
<appender name="ColoredConsoleAppender" type="Lib.ConsoleAppenderWithColorSwitching">
log4net告诉我我的Lib没有加载到程序集中,这是确切的错误:
log4net:ERROR无法创建[Lib.ConsoleAppenderWithColorSwitching]类型的Appender [ColoredConsoleAppender]。报告的错误如下。 System.TypeLoadException:无法加载类型[Lib.ConsoleAppenderWithColorSwitching]。试过装配[log4net,Version = 1.2.15.0,Culture = neutral,PublicKeyToken = 669e0ddf0bb1aa2a]和所有已加载的程序集
在我的程序开始时,我已经使用以下方法检查了加载的程序集:
AppDomain.CurrentDomain.GetAssemblies();
我的图书馆确实没有加载。
如何加载我的类库,以便在App.config文件中使用我的appender?
答案 0 :(得分:3)
尝试使用程序集限定名称。例如,对于程序集MyLib中的类Namespace.SomeClass,程序集限定名称将是Namespace.SomeClass,MyLib。
这仅在MyLib位于GAC,应用程序目录或应用程序的指定私有二进制子目录之一时才有效。
有关完全限定名称的更多信息,请参阅https://msdn.microsoft.com/en-us/library/yfsftwz6(v=vs.110).aspx。
还有许多其他加载程序集的机制,但为了通过配置文件加载,程序集限定名称应该有效。
答案 1 :(得分:0)
我已经能够通过在类型名称后面指定程序集来解决我的问题:
<appender name="ColoredConsoleAppender" type="Lib.ConsoleAppenderWithColorSwitching, Lib">