首页 文章

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

提问于
浏览
0

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

    我已经能够通过在类型名称后面指定程序集来解决我的问题:

    <appender name="ColoredConsoleAppender" type="Lib.ConsoleAppenderWithColorSwitching, Lib">
    
  • 3

    尝试使用程序集限定名称 . 例如,对于程序集MyLib中的类Namespace.SomeClass,程序集限定名称将是Namespace.SomeClass,MyLib .

    这仅在MyLib位于GAC,应用程序目录或应用程序的指定私有二进制子目录之一时才有效 .

    有关完全限定名称的更多信息,请参见https://msdn.microsoft.com/en-us/library/yfsftwz6(v=vs.110).aspx .

    还有许多其他加载程序集的机制,但为了通过配置文件加载,程序集限定名称应该有效 .

相关问题