来自log4net LogManager.GetLogger的TypeLoadException

时间:2013-10-24 15:18:26

标签: c# .net compact-framework log4net windows-ce

我正在尝试使用log4net在Windows CE / Windows Embedded项目中提供日志记录。但是,在调试项目时,我得到以下异常

  

发生了System.TypeLoadException     消息= “TypeLoadException”     堆栈跟踪:          at log4net.LogManager.GetLogger(Assembly repositoryAssembly,String name)          at log4net.LogManager.GetLogger(Type type)          在Sis.SiLogCE.Broker.StartBroker..cctor()          在Sis.SiLogCE.Broker.EntryPoint.Program.Main()

来自以下一行:

private static readonly ILog log = LogManager.GetLogger(typeof(StartBroker)); 

起初,我以为我可能一直在使用错误的dll /旧的dll,所以我下载了最新的版本 - 我使用的是来自1.2.12-bin-newkey的log4net.dll,并在.net-cp 3.5中找到。

我看过其他的例子,虽然文档和我没有理由在这里得到类型加载异常。我现在几乎没有关于导致异常的几个想法。

背景信息:

应用程序将部署在Windows CE 6和Windows Embedded / Windows Mobile 6和6/5设备上。

.net 3.5 .netcf

以下块显示从名为“log4net.config”的XML文件加载log4net的配置。

    string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().
        GetModules()[0].FullyQualifiedName) + "log4net.config";

    if (File.Exists(path))
    {
        XmlConfigurator.ConfigureAndWatch(new FileInfo(path));
    }

编辑:

到目前为止,我只测试了Wince 6.0,所以我刚刚使用Windows Mobile 6.5进行了测试 - 它没有什么不同,同样的例外情况也是如此。

1 个答案:

答案 0 :(得分:1)

您使用的是二进制版本,还是从源代码构建的?我问this页提到Compact Framework 1.0& 2.0版本是二进制版本支持的 ,但如果从源版本构建,则受支持。