Quartz.NET, как хранить полное имя сборки

1

Quartz.NET использует следующее для имени класса задания:

ClassName, myAssembly

Однако myAssembly.dll живет в GAC, поэтому при попытке выполнить задание я получаю следующую ошибку:

Could not load file or assembly 'myAssembly' or one of its dependencies. The system cannot find the file specified.

Мне действительно нужно использовать полное имя, поэтому он будет загружаться с ПКК. Например

ClassName, myAssembly, Version=1.2.3.4, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx

Есть ли способ передать Quartz.NET полную информацию? Я заметил в "GetStorableJobTypeName" в StdAdoDelegate.cs, что номер версии и т.д. Отрезаны от имени.

Должен ли я просто создать собственный пользовательский StdAdoDelegate и переопределить эту функцию? Не совсем уверен, что такое лучшая практика здесь.

  • 0
    Почему вы помещаете это в GAC?
  • 0
    Потому что у нас есть несколько сотен веб-сайтов, которые используют одну и ту же DLL, и проще обновить их все, если DLL находится в GAC
Теги:
scheduler
quartz.net

1 ответ

2
Лучший ответ

Если вы действительно этого хотите, вы должны переопределить имя GetStorableJobTypeName, как вы уже обнаружили. Я бы настоятельно советовал хранить полное имя, так как это приведет к множеству проблем. Если ничего другого, привязка переадресаций всякий раз, когда вы создаете новую версию DLL.

  • 0
    Помимо изменения версии DLL, знаете ли вы, с какими другими проблемами мы можем столкнуться? Нам действительно нужно время от времени обновлять DLL, поэтому я не смогу использовать перенаправление привязки. Я думаю, что мне нужен какой-то способ сделать его устойчивым к изменениям версии, например, если версия меняется (сборка не загружается), задание удаляется.
  • 0
    Хорошо, поэтому я нашел небольшой обходной путь: я вручную обновляю ссылку на DLL в столбце JOB_CLASS_NAME при запуске приложения, используя шаблон Regex.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню