2014-02-27 43 views
1

我正在使用Quartz.Net 2.X,并且据我所知,它正在扫描执行目录以查找IJob的实例。有没有办法来定义其他目录(理想情况下多个目录)在哪里寻找“IJobs”?Quartz.Net在多个目录中查找

回答

0

有几种方法,其中之一是编写自定义ITypeLoadHelper。在我的设置我用AppDomain.AssemblyResolve事件实际上有任何依赖负载从我的自定义文件夹:

public class CustomFolderTypeLoadHelper : SimpleTypeLoadHelper 
{ 
    private Dictionary<string, string> dllPaths; 
    public override void Initialize() 
    { 
     string path = @"C:\"; // quick&dirty way 
     dllPaths = new DirectoryInfo(path) 
      .GetFiles("*.dll") 
      .ToDictionary(fi => Path.GetFileNameWithoutExtension(fi.Name), fi => fi.FullName); 

     AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => 
      dllPaths.ContainsKey(args.Name) ? Assembly.LoadFrom(dllPaths[args.Name]) : null; 

     base.Initialize(); 
    } 
} 

那么这行添加到quartz.config

quartz.scheduler.typeLoadHelper.type = MyNamespace.CustomFolderTypeLoadHelper, MyAssembly 

或者你可以使用的方法LoadType()该接口上做石英的方式。

在任何一种情况下,将此引导程序类放在Quartz bin文件夹中。