c# - 程序集未加载 c#

标签 c# .net log4net

我有一个项目 Common,其中包含一个 log4net CustomAppender。我在所有其他项目中引用该项目,并在 app.config 中配置 log4net appender。除了一个项目在尝试实例化 Appender 时失败之外,一切都运行顺利。

输出显示以下错误:

System.TypeLoadException: Could not load type [Common.Appenders.MyCustomAppender].
Tried assembly [log4net, Version=1.2.11.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a]
and all loaded assemblies
at log4net.Util.SystemInfo.GetTypeFromString(Assembly relativeAssembly, String typeName, Boolean throwOnError, Boolean ignoreCase)
at log4net.Util.SystemInfo.GetTypeFromString(String typeName, Boolean throwOnError, Boolean ignoreCase)
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlElement appenderElement)
log4net:ERROR Appender named [MyCustomAppender] not found.

The log4net configuration is the same for all project. app.config contains:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <log4net>
    <appender name="MyCustomAppender" type="Common.Appenders.MyCustomAppender">
      <file value="log.txt" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="MyCustomAppender" />
    </root>
  </log4net>
</configuration>

我从代码调用 log4net.Config.XmlConfigurator.Configure()。如果我在为非工作项目调用 log4net 配置之前使用 Assembly.Load("Common") 手动加载程序集,一切都很好。

知道为什么当 MyCustomAppender 通过反射实例化时没有加载程序集吗?我该如何解决这个问题?

最佳答案

尝试将程序集的名称放在类型名称之后

<appender name="MyCustomAppender" type="Common.Appenders.MyCustomAppender,Common">

http://weblogs.asp.net/tgraham/archive/2007/05/02/loading-the-assembly-for-a-custom-log4net-appender.aspx

请记住,程序集的名称不一定与其默认命名空间或 Visual Studio 中的项目名称相同。 这里的相关名称是输出名称(即生成的dll的文件名)

关于c# - 程序集未加载 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20082614/

相关文章:

c# - 在 Visual Studio 中编译时如何将 DLL 保存在不同的文件夹中?

java - 将 .Net 解密转换为 Java

c# - 选择其中一个功能

visual-studio - VS 中的 log4net 和 NUnit 3.2 以及控制台输出

unit-testing - NUnit 的 log4Net 问题(已尝试 v2.5.7、2.5.2、2.4.8、2.4.7)

c# - 带有 log4net 的 Raygun 不记录

c# - API 在代码中返回有效的 JSON,但在浏览器中返回无效的 JSON

c# - XmlSerializer 和 xsi :type

c# - Excel 工作表对象不等于同一个工作表对象

c# - 对 yield 返回和从 foreach 中断的担忧