【问题标题】:why Load(byte[]) lead to one more AssemblyResolve event and LoadFrom(filepath) does not为什么 Load(byte[]) 会导致另一个 AssemblyResolve 事件而 LoadFrom(filepath) 不会
【发布时间】:2021-10-13 17:48:42
【问题描述】:

我正在使用 log4net。我将“log4net.dll”放在与“log4net.config”不同的位置。并且我在 AssemblyResolve 事件中动态加载“log4net.dll”。当我使用 Load(byte[]) 时,AssemblyResolve 会跳动稍后调用 log4net.Config.XmlConfigurator.ConfigureAndWatch(somepath\\log4net.config) 时请求 log4net。 但是当我在 AssemblyResolve 中改为使用LoadFrom(filepath) 时,它会很好。这两种方法有什么不同吗?“log4net.config”看起来像:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <log4net>
    <logger name="modifyLogger">
      <level value="ALL" />
      <appender-ref ref="modifyLogFile" />
    </logger>

    <appender  name="modifyLogFile" type="log4net.Appender.RollingFileAppender,log4net" >
      <param name= "File" value= "log/modify/"/>
      <param name= "AppendToFile" value= "true"/>
      <param name= "MaxSizeRollBackups" value= "10"/>
      <param name= "StaticLogFileName" value= "false"/>
      <param name= "DatePattern" value= "yyyy-MM-dd&quot;.log&quot;"/>
      <param name= "RollingStyle" value= "Composite"/>
      <maximumFileSize value="10MB"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="Header" value="&#xD;&#xA;----------------------application startup--------------------------&#xD;&#xA;" />
        <param name="Footer" value="&#xD;&#xA; ----------------------application shutdown--------------------------&#xD;&#xA;" />
        <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} --%-5p-- %m%n" />
      </layout>
    </appender>

    <logger name="logLogger">
      <level value="ALL" />
      <appender-ref ref="LogFile" />
    </logger>
    
    <appender  name="LogFile" type="log4net.Appender.RollingFileAppender,log4net" >
      <param name= "File" value= "log/"/>
      <param name= "AppendToFile" value= "true"/>
      <param name= "MaxSizeRollBackups" value= "10"/>
      <param name= "StaticLogFileName" value= "false"/>
      <param name= "DatePattern" value= "yyyy-MM-dd&quot;.log&quot;"/>
      <param name= "RollingStyle" value= "Composite"/>
      <maximumFileSize value="10MB"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="Header" value="&#xD;&#xA;----------------------application startup--------------------------&#xD;&#xA;" />
        <param name="Footer" value="&#xD;&#xA; ----------------------application shutdown--------------------------&#xD;&#xA;" />
        <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} --%-5p-- %m%n" />
      </layout>
    </appender>
    
    <appender>
    </appender>
    <logger name="logApp">
      <level value="ALL" />
    </logger>
    <root>
    </root>
  </log4net>
</configuration>

【问题讨论】:

    标签: .net winforms load log4net .net-assembly


    【解决方案1】:

    根据documentation的备注部分,有区别:

    加载源上下文允许从未包含在探测中的路径加载程序集,但允许找到并加载该路径上的依赖项,因为路径信息由上下文维护.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-18
      • 1970-01-01
      • 2017-01-26
      • 2016-11-18
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      相关资源
      最近更新 更多