2012-03-23 66 views
0

我试图从一个单独的程序集中执行Q​​uartz.net作业。该类从IJob接口继承,实现了Execute方法,并已被复制到同一文件夹中Quartz.Server.exe,但我发现了以下错误:从一个单独的程序集执行Quartz.NET作业

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)

我使用version 2 beta 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.Server.exe的.Net服务器文件夹。

的quartz_jobs.xml文件具有使用默认文件工作组,只用作业类型改变,以反映新的组件和类:

<job-type>TestJobs.TestJob, TestJobs</job-type> 

想这可能是一些做框架版本,但Quartz.net似乎也使用.NET 4(Quartz.dll依赖v4程序集)。

还有another question on SO关于同一类型的问题,但它没有一个明确的答案。

还有什么我需要做的,这样的作业可以加载和执行?

回答

0

解决这个问题的想法变得简单了一点。这是由我的程序集导致的,测试作业是为x86而不是AnyCPU(或x64)编译并使用Windows 7 x64。

相关问题