我正在使用单声道在 C# 中编写一个守护进程。到目前为止,我设法实现了我的逻辑和所有并在控制台程序中测试它就好了。我在 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 / .Net 4.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 是我发现上面报告的错误消息的地方。谁能给我一个提示会是什么问题?