использование моно-службы для переноса службы Windows в Linux - PullRequest
13 голосов
/ 09 декабря 2008

Привет. Я пытаюсь использовать mono-service2 для запуска стандартного проекта Windows Service Project из Visual Studio. Я запускаю это на Debian с Mono 2.0 и компилирую с помощью.

gmcs *.cs -pkg:dotnet

Я пытаюсь начать с этого (я пробовал с -d, установленным в каталог с приложением и -n, -m set)

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

Единственное изменение кода - добавить строки для тестирования

Service1.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]

Спасибо за вашу помощь

Ответ

Мне не хватало переменной env LD____LIBRARY____PATH, поэтому я добавил ее в csh для теста

#!/bin/csh
setenv LD_LIBRARY_PATH .:/usr/local/lib
mono-service2 -l:service.lock --debug Program.exe

Ответы [ 2 ]

9 голосов
/ 09 декабря 2008

Куда указывает ваш LD_LIBRARY_PATH? libMonoPosixHelper.so там?

0 голосов
/ 09 декабря 2008

Убедитесь, что у вас установлена ​​ libmono0 .

...