使用单一服务在Linux上包装Windows服务

问题描述:

嗨我试图使用mono-service2从Visual Studio中运行一个库存Windows服务项目。我使用单声道2.0在debian上运行这个程序并编译。使用单一服务在Linux上包装Windows服务

gmcs *.cs -pkg:dotnet 

我试着和这个开始(我试过用-d设置为与应用程序和-n,-m集的目录)

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

唯一代码的变化是增加writelines用于测试

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...."); 
     } 
    } 
} 

所得我s此错误

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] 

感谢您的帮助

回答

我错过了LD____LIBRARY____PATH环境变量,所以我增加了它在csh的测试

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

你是在顶部,debian,mono-2.0 – 2008-12-09 10:18:14

+0

删除我的第一个评论,因为不再相关。忽略了那些信息,对不起。 ;-) – Tomalak 2008-12-09 10:19:16

你的LD_LIBRARY_PATH指向哪里? libMonoPosixHelper.so在那里?

确保您已安装libmono0