无法启动mono-service2守护程序-在“中缺少方法”/usr/local/lib/mono/2.0/mscorlib.dll“;

无法启动mono-service2守护程序-在“中缺少方法”/usr/local/lib/mono/2.0/mscorlib.dll“;,mono,mono-service,Mono,Mono Service,我正在用C#编写一个守护进程,使用mono。到目前为止,我成功地实现了我的逻辑和所有功能,并在控制台程序中对其进行了测试。我在Windows XP中使用MonoDevelop 4.0.9并在那里编译,然后将文件移动到CentOS进行测试。我已经在CentOS上手动编译了mono 3.0.12,我可以在那里测试我的控制台程序,没有任何问题。我的项目由几个库(.net dll文件)组成,其中包含我的逻辑,我在两个可执行项目中使用相同的文件;控制台和守护进程 当控制台平稳运行时,守护进程在启动时输出以

我正在用C#编写一个守护进程,使用mono。到目前为止,我成功地实现了我的逻辑和所有功能,并在控制台程序中对其进行了测试。我在Windows XP中使用MonoDevelop 4.0.9并在那里编译,然后将文件移动到CentOS进行测试。我已经在CentOS上手动编译了mono 3.0.12,我可以在那里测试我的控制台程序,没有任何问题。我的项目由几个库(.net dll文件)组成,其中包含我的逻辑,我在两个可执行项目中使用相同的文件;控制台和守护进程

当控制台平稳运行时,守护进程在启动时输出以下错误:

Missing method System.Threading.Monitor::Enter(object,bool&) in assembly /usr/local/lib/mono/2.0/mscorlib.dll, referenced in assembly /usr/bin/wssd/Base.dll
这很奇怪,因为我所有的项目都是针对
Mono/.net4.0
编译的。只是强调一下,两次运行共享相同的库文件列表,它们唯一的区别是可执行文件:
Console.exe
WSSDaemon.exe

以下是我如何称呼他们的:

$ mono ./Console.exe
$ mono-service2 -d:$WORK_DIR -l:$PIDFILE -m:$SERVICE_NAME -n:$SERVICE_NAME $DAEMON --debug > /tmp/wssd_log.txt

我在wssd_log.txt中找到了上面报告的错误消息。有人能给我一个提示吗?

我刚刚找到了问题,我不得不使用
mono-service
而不是
mono-service2
。原来
mono-service2
是针对.NET2的,而
mono-service2
是针对.NET4.5的!!可以使用以下命令对此进行测试:

grep exec `type -p mono-service` | head -n 1
哪些产出:

exec /usr/local/bin/mono $MONO_OPTIONS /usr/local/lib/mono/4.5/mono-service.exe $args

产出:

exec /usr/local/bin/mono $MONO_OPTIONS /usr/local/lib/mono/2.0/mono-service.exe $args
不管是谁,我只希望别人能从我的经历中受益

exec /usr/local/bin/mono $MONO_OPTIONS /usr/local/lib/mono/2.0/mono-service.exe $args