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

您好我试图使用mono-service2从Visual Studio中运行一个股票Windows服务项目。 我用声道2.0运行在debian上,并编译。

gmcs *.cs -pkg:dotnet 

我试着从这开始(我已经尝试用-d设置到应用程序的目录和-n,-m设置)

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

唯一的代码更改是添加用于testing的书签

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] 

谢谢你的帮助

回答

我错过了LD____LIBRARY____PATH envvariables,所以我将它添加到csh中进行testing

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

Solutions Collecting From Web of "使用单一服务包装在Linux上的Windows服务"