.Net/Mono&;Ubuntu与log4net

.Net/Mono&;Ubuntu与log4net,mono,log4net,Mono,Log4net,我被要求在Ubuntu Linux(14.04)上编写一个小型仪器校准应用程序,并一直在编写一些小型概念验证应用程序(串行I/o、GUI、SQLite等),以查看Mono是否适合。在我测试我最喜欢的日志包log4net之前,一切都很顺利。我无法让代码正常工作。下面是一个简单的测试应用程序,可以在Windows设备上正常工作: using System; using log4net; using log4net.Config; public class L { public static

我被要求在Ubuntu Linux(14.04)上编写一个小型仪器校准应用程序,并一直在编写一些小型概念验证应用程序(串行I/o、GUI、SQLite等),以查看Mono是否适合。在我测试我最喜欢的日志包log4net之前,一切都很顺利。我无法让代码正常工作。下面是一个简单的测试应用程序,可以在Windows设备上正常工作:

using System;
using log4net;
using log4net.Config;

public class L
{
    public static void Main(string[] args)
    {
        Console.WriteLine("Version: " + Environment.Version);
        XmlConfigurator.Configure(
            new System.IO.FileInfo("console.logconfig.xml"));
        Console.WriteLine("logging configured.");
        ILog log = LogManager.GetLogger("root");
        log.Info("This is an info message.");
        log.Warn("This is a warning message.");
        log.Error("This is an error message.");
    }
}
编撰

gmcs -pkg:log4net,dotnet -main:L -out:L.exe L.cs
代码进行编译,但生成运行时错误:

Version: 2.0.50727.1433
Missing method System.Reflection.Assembly::op_Equality(Assembly,Assembly) in assembly /usr/lib/mono/2.0/mscorlib.dll, referenced in assembly /usr/lib/mono/gac/log4net/1.2.10.0__a5715cc6d5c3540b/log4net.dll

Unhandled Exception:
System.MissingMethodException: Method not found: 'System.Reflection.Assembly.op_Equality'.
  at log4net.LogManager.GetRepository (System.Reflection.Assembly repositoryAssembly) [0x00000] in <filename unknown>:0
  at log4net.Config.XmlConfigurator.Configure (System.IO.FileInfo configFile) [0x00000] in <filename unknown>:0
  at L.Main (System.String[] args) [0x00000] in <filename unknown>:0
我得到一个编译错误:

error CS0006: Metadata file `cscompmgd.dll' could not be found
这是在全新的Ubuntu 14.04虚拟机上,Mono通过以下方式安装:

sudo apt-get install mono-complete
sudo apt-get install liblog4net1.2-cil
sudo apt-get install liblog4net-cil-dev

请推荐?

不幸的是,为Ubuntu(1.2.10)打包的log4net版本非常旧,并且已知.net4.0存在问题。1.2.11已于2011年10月发布,截至撰写本文时,1.2.13是最新版本


您需要直接从ApacheLog4Net站点下载最新版本:

您几乎拥有了它;Ubuntu 14.04:


gmcs-sdk:4.5-r:/usr/lib/cli/log4net-1.2/log4net.dll App.cs

1.2.10非常旧,已知它与.NET 4.x有问题。你试过最新的版本吗@Stefan,就是这样一个更新的版本修复了一切。(叹气)我不认为我需要从Apache站点上删除log4net,因为我认为Ubuntu存储库将包含当前版本。我真傻。谢谢你的帮助!
sudo apt-get install mono-complete
sudo apt-get install liblog4net1.2-cil
sudo apt-get install liblog4net-cil-dev