我在 C# .NET 4.0 Windows 服务应用程序中使用 ILMerge 和 Quartz.NET。该应用程序在不使用 ILMerge 的情况下运行良好,但现在我们即将发布,我想将所有 DLL 合并到一个可执行文件中。
问题是,ILMerge 似乎工作正常,但是当我运行组合的可执行文件时,它会抛出这个异常:
未处理的异常:Quartz.SchedulerException:无法实例化 ThreadPool 类型“Quartz.Simpl.SimpleThreadPool”。---> System.InvalidCastException:无法将“Quartz.Simpl.SimpleThreadPool”类型的对象转换为“Quartz.Spi.IThreadPool”类型。
在 Quartz.Util.ObjectUtils.InstantiateType[T](Type type) in :line 0
at Quartz.Impl.StdSchedulerFactory.Instantiate() in :line 0
--- End of internal exception stack trace ---
at Quartz.Impl。 StdSchedulerFactory.Instantiate() in :line 0
at Quartz.Impl.StdSchedulerFactory.GetScheduler() in :line 0
有谁知道这是为什么?我已经浪费了4个多小时,我无法弄清楚。如果我不与 ILMerge 结合使用,那么一切都运行良好(Quartz.dll 和 Common.Logging.dll 在同一目录中)。
我敢肯定,以前一定有人尝试过像这样打包 Quartz.net,有什么想法吗?