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

How do I load an assembly in app.config?

这是完整的故事: 我正在尝试为 log4net 实现自定义附加程序。该 appender 曾经与 App.config 在同一个项目中,并且一切正常,但现在我将它移到了我正在引用的另一个项目(class 库)中。我的共享项目的名称是 Lib,我的 appender 包含在 Lib 命名空间中,所以我这样引用它:

<appender name="ColoredConsoleAppender" type="Lib.ConsoleAppenderWithColorSwitching">

log4net 告诉我我的库没有加载到程序集中,这是确切的错误:

log4net:ERROR Could not create Appender [ColoredConsoleAppender] of type [Lib.ConsoleAppenderWithColorSwitching]. Reported error follows. System.TypeLoadException: Could not load type [Lib.ConsoleAppenderWithColorSwitching]. Tried assembly [log4net, Version=1.2.15.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a] and all loaded assemblies

在我的程序开始时,我使用以下方法检查了加载的程序集:

AppDomain.CurrentDomain.GetAssemblies();

而且我的库确实没有加载。

如何加载我的 class 库以便我可以在我的 App.config 文件中使用我的附加程序?

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

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

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

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

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

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