我正在使用 Quartz.Net 2.X,据我了解,它正在扫描执行目录以查找 IJob 的实例。有没有办法定义其他目录(理想情况下是多个目录)在哪里寻找“IJobs”?
问问题
181 次
1 回答
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 方式进行操作。
在任何一种情况下,将带有此引导程序类的程序集放在 Quartz bin 文件夹中。
于 2014-07-03T14:15:37.487 回答