Я использую ILMerge и Quartz.NET в приложении C# .NET 4.0 для Windows. Приложение работает отлично, не используя ILMerge, но теперь, когда мы приближаемся к выпуску доставки, я хотел объединить все библиотеки DLL в один исполняемый файл.Исполняемый файл не работает с странным исключением
Проблема заключается в том, что ILMerge, кажется, работает хорошо, но когда я запускаю комбинированную исполняемый, он бросает это исключение:
Необработанное исключение: Quartz.SchedulerException: Тип ThreadPool «Quartz.Simpl.SimpleThreadPool» может не создаваться. ---> System.InvalidCastException: Невозможно наложить объект типа Quartz.Simpl.SimpleThreadPool на тип «Quartz.Spi.IThreadPool».
на Quartz.Util.ObjectUtils.InstantiateType [T] (Тип) в: линия 0
в Quartz.Impl.StdSchedulerFactory.Instantiate() в: линия 0
--- Конец внутренней трассировки стека исключений - -
на Quartz.Impl.StdSchedulerFactory.Instantiate() в: линии 0
в Quartz.Impl.StdSchedulerFactory.GetScheduler() в: линия 0
кто-нибудь есть какие-либо идеи, почему это? Я уже более 4 часов трачу, и я не могу понять. Если я не совмещаюсь с ILMerge, все работает нормально (с Quartz.dll и Common.Logging.dll в том же каталоге).
Я уверен, что кто-то, должно быть, попробовал упаковку Quartz.net, как это раньше, любые идеи?
Это первый раз, когда вы попытались объединить его с ILMerge? Или он работал до недавних изменений? –
Впервые я попытался использовать ILMerge, запустил его, больше не работал. Понял, что это, должно быть, ILMerge, попробовал флаг интернализации, ничего не изменил. Удалите ILMerge, скомпилированный в обычном режиме (например, я использовал это, прежде чем попробовать это), все работает (если библиотеки DLL находятся в одном каталоге). –
Одна из вещей, которые ILMerge не обрабатывает, - это загрузка по типу с внешней сборки (что может иметь место на основе взгляда на stacktrace). Возможно, посмотрите также на одну из альтернатив, найденных здесь (http://chrisghardwick.blogspot.nl/2012/01/ilmerge-getting-started-merging-and.html) – rene