如何在app.config中加载程序集?
本文关键字:加载 程序集 config app | 更新日期: 2023-09-27 18:02:10
全文如下:我试图实现一个自定义的appender为log4net。该追加器曾经是在同一个项目的App.config和一切都工作得很好,但现在我把它移动到另一个项目(类库),我引用。我的共享项目的名称是Lib,我的appender包含在Lib命名空间中,所以我这样引用它:
<appender name="ColoredConsoleAppender" type="Lib.ConsoleAppenderWithColorSwitching">
log4net告诉我,我的Lib没有加载到程序集中,下面是确切的错误:
log4net:ERROR无法创建类型为[Lib.ConsoleAppenderWithColorSwitching]的Appender [ColoredConsoleAppender]。下面是报告的错误。系统。typeeloadeexception:无法加载类型[Lib.ConsoleAppenderWithColorSwitching]。尝试程序集[log4net, Version=1.2.15.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a]和所有已加载程序集
在我的程序开始时,我使用
检查了加载的程序集AppDomain.CurrentDomain.GetAssemblies();
和我的库确实没有加载。
我怎样才能加载我的类库,这样我就可以在我的App.config文件中使用我的appender ?
尝试使用程序集限定名。例如对于类命名空间。在程序集MyLib中,程序集限定名将是Namespace。SomeClass MyLib。
只有当MyLib位于GAC、应用程序目录或应用程序指定的私有二进制子目录之一时,这才会起作用。
请参阅https://msdn.microsoft.com/en-us/library/yfsftwz6(v=vs.110).aspx了解更多关于完全限定名称的信息。
加载程序集有许多其他机制,但为了通过配置文件加载程序集,应该使用程序集限定名。
我已经能够通过在类型的名称之后指定程序集来解决我的问题:
<appender name="ColoredConsoleAppender" type="Lib.ConsoleAppenderWithColorSwitching, Lib">