https://github.com/apache/log4net
Я компилирую log4net из исходного кода, но он не проходит проверку:
[IL]: Ошибка: [log4net.dll: log4net.Plugin.RemoteLoggingServerPlugin:: Attach] [offset 0x00000029] Метод не отображается.
Код в порядке:
public interface ILoggerRepository
{
...
}
public interface IPlugin
{
void Attach(ILoggerRepository repository);
}
public abstract class PluginSkeleton : IPlugin
{
public virtual void Attach(ILoggerRepository repository) { }
}
public class RemoteLoggingServerPlugin : PluginSkeleton
{
override public void Attach(ILoggerRepository repository)
{
base.Attach(repository);
...
}
}
https://github.com/apache/log4net/blob/trunk/src/Plugin/IPlugin.cs
https://github.com/apache/log4net/blob/trunk/src/Plugin/PluginSkeleton.cs
https://github.com/apache/log4net/blob/trunk/src/Plugin/RemoteLoggingServerPlugin.cs
Исследование показывает, что он не смог вызвать RemotingServices.Marshal()
:
override public void Attach(ILoggerRepository repository)
{
base.Attach(repository);
// Create the sink and marshal it
m_sink = new RemoteLoggingSinkImpl(repository);
try
{
**RemotingServices.Marshal(m_sink, m_sinkUri, typeof(IRemoteLoggingSink));**
}
catch(Exception ex)
{
LogLog.Error(declaringType, "Failed to Marshal remoting sink", ex);
}
}
Но здесь нет ничего важного. Более того, вызов RemotingServices.Marshal()
с любым типом приводит к тем же проблемам:
Даже если я изменил Attach()
на это:
override public void Attach(ILoggerRepository repository)
{
RemotingServices.Marshal(null, null, typeof(int));
}
Может ли кто-нибудь определить, в чем проблема?