代码之家  ›  专栏  ›  技术社区  ›  Scott Cowan

在linux上使用mono服务包装windows服务

  •  13
  • Scott Cowan  · 技术社区  · 17 年前

    您好,我正在尝试使用mono-service2从VisualStudio运行一个stock Windows服务项目。我用mono 2.0在debian上运行它,并用编译。

    gmcs *.cs -pkg:dotnet
    

    我试着从这个开始(我试着用app将-d设置为dir,用-n,-m设置)

    mono-service2 -l:service.lock --debug Program.exe
    

    服务1.cs

    using System;
    using System.ServiceProcess;
    
    namespace spikes
    {
        public partial class Service1 : ServiceBase
        {
            public Service1()
            {
                InitializeComponent();
            }
    
            protected override void OnStart(string[] args)
            {
                Console.WriteLine("starting...");
            }
    
            protected override void OnStop()
            {
                Console.WriteLine("stopping....");
            }
        }
    }
    

    结果就是这个错误

    Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for Mono.Unix.Native.Syscall ---> System.DllNotFoundException: libMonoPosixHelper.so
      at (wrapper managed-to-native) Mono.Unix.Native.Syscall:_L_ctermid ()
      at Mono.Unix.Native.Syscall..cctor () [0x00000]
      --- End of inner exception stack trace ---
      at MonoServiceRunner.Main (System.String[] args) [0x00000]
    

    答复

    #!/bin/csh
    setenv LD_LIBRARY_PATH .:/usr/local/lib
    mono-service2 -l:service.lock --debug Program.exe
    
    2 回复  |  直到 17 年前
        1
  •  9
  •   Tomalak    17 年前

    您的LD_LIBRARY_路径指向哪里?是 libMonoPosixHelper.so

        2
  •  0
  •   Claymore    17 年前

    确保你有 libmono0