如何在app.config中加载程序集?

时间:2016-08-13 00:06:20

标签: c# .net log4net .net-assembly

以下是完整的故事: 我正在尝试为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?

2 个答案:

答案 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">