Я пытаюсь выполнить задание Quartz.net из отдельной сборки. Класс наследуется от интерфейса IJob, реализует метод Execute и был скопирован в ту же папку, что и Quartz.Server.exe, но я получаю следующую ошибку:
Error scheduling jobs: Could not load file or
assembly 'TestJobs' or one of its dependencies. An attempt was made to load a p
rogram with an incorrect format.
System.BadImageFormatException: Could not load file or assembly 'TestJobs' or on
e of its dependencies. An attempt was made to load a program with an incorrect format.
File name: 'TestJobs'
at System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError,
Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMarkHandle stackMark, Bool
ean loadTypeFromPartialName, ObjectHandleOnStack type)
... (snipped)
Я использую версия 2 бета 2 . Серверное приложение было разархивировано в отдельную папку и выполняется с помощью Quartz.Server.exe из командной строки.
Мой образец задания представляет собой отдельную сборку с именем TestsJobs, в которой содержится базовое задание для записи в текстовый файл:
public class TestJob : IJob
{
public void Execute(IJobExecutionContext context)
{
try
{
string path = @"c:\test.txt";
while (true)
{
var line = DateTime.Now.ToString() + " - " + Guid.NewGuid();
File.AppendAllText(path, line);
Thread.Sleep(500);
}
catch (Exception ex)
{
throw new JobExecutionException("Error", ex, false);
}
}
}
}
Это базовый проект библиотеки классов, предназначенный для .NET 4. Он копируется в папку сервера Quartz.Net, из которой запускается Quartz.Server.exe.
В файле quartz_jobs.xml задание задано с использованием файла по умолчанию, и только тип задания изменился, чтобы отразить новую сборку и класс:
<job-type>TestJobs.TestJob, TestJobs</job-type>
Возможно, это связано с управлением версиями фреймворка, но Quartz.net, похоже, также использует .NET 4 (Quartz.dll зависит от сборок v4).
На SO есть еще 1020 * другой вопрос о том же типе проблемы, но на него нет четкого ответа.
Что еще нужно сделать, чтобы задание можно было загрузить и выполнить?