0

mono を使用して C# でデーモンを作成しています。これまでのところ、ロジックとすべてを実装し、コンソール プログラムで問題なくテストすることができました。私は Windows XP で MonoDevelop 4.0.9 を使用しており、そこでコンパイルしてから、ファイルを CentOS に移動してテストします。CentOS で mono 3.0.12 を手動でコンパイルしたので、問題なくコンソール プログラムをテストできます。私のプロジェクトは、ロジックを含む複数のライブラリ (.net dll ファイル) で構成されており、2 つの実行可能プロジェクトで同じファイルを使用しています。コンソールとデーモン。

コンソールはスムーズに実行されますが、デーモンは開始時に次のエラーを出力します。

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.exeWSSDaemon.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 は、上記で報告されたエラー メッセージを見つけた場所です。誰が私に問題が何であるかについてのヒントを教えてもらえますか?

4

1 に答える 1

1

問題を見つけることができたので、のmono-service代わりに使用する必要がありmono-service2ました。mono-service2.Net 2 およびmono-service.Net 4.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

その間

grep exec `type -p mono-service2` | head -n 1

出力:

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

とにかく、他の人が私の経験から利益を得ることができることを願っています.

于 2013-07-07T08:48:18.307 に答える