C# .NET 4.0 Windows サービス アプリケーションで ILMerge と Quartz.NET を使用しています。アプリは ILMerge を使用しなくても正常に動作しますが、出荷リリースが近づいているため、すべての DLL を 1 つの実行可能ファイルに結合したいと考えました。
問題は、ILMerge が正常に動作しているように見えることですが、結合された実行可能ファイルを実行すると、次の例外がスローされます。
未処理の例外: Quartz.SchedulerException: ThreadPool タイプ 'Quartz.Simpl.SimpleThreadPool' をインスタンス化できませんでした。---> System.InvalidCastException: タイプ「Quartz.Simpl.SimpleThreadPool」のオブジェクトをタイプ「Quartz.Spi.IThreadPool」にキャストできません。
at Quartz.Util.ObjectUtils.InstantiateType[T](Type type) in :line 0
at Quartz.Impl.StdSchedulerFactory.Instantiate() in :line 0
--- 内部例外スタック トレースの終わり ---
at Quartz.Impl. StdSchedulerFactory.Instantiate() : 行 0
で Quartz.Impl.StdSchedulerFactory.GetScheduler() : 行 0
これがなぜなのか誰にも分かりますか?私はすでに 4 時間以上無駄にしていますが、それを理解することはできません。ILMerge と組み合わせない場合、すべて正常に動作します (Quartz.dll と Common.Logging.dll は同じディレクトリにあります)。
誰かが Quartz.net をこのようにパッケージ化しようとしたに違いないと確信しています。何かアイデアはありますか?