gpt4 book ai didi

c# - Quartz.net - 将程序集(单独的时间表)放在 then/bin 以外的不同文件夹中

转载 作者:太空宇宙 更新时间:2023-11-03 11:21:31 24 4
gpt4 key购买 nike

我有一个调用 quartz.net 的 Windows 服务,如下所示:

  ISchedulerFactory schedFact = new StdSchedulerFactory();
sched = schedFact.GetScheduler();
sched.Start();

我的配置文件如下:

<add key="quartz.plugin.xml.fileNames" value="~/quartz/quartz_jobs.xml" />

在发布我的 Windows 服务时,我设计了以下文件夹结构:

/bin/      "Various Dlls for my windows service"
/bin/Quartz/ "Includes by schedule plugins ( Seperate classes and my Jobs file )

我遇到的问题是 quartz 找不到我的程序集,除非我将它们复制到/bin/的根目录中。

关于如何将所有日程安排程序集保存在单独的文件夹中有什么想法吗?

最佳答案

感谢来自 Google 群组的 Karell。

这是我解决这个问题的代码。

   AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyResolve += new ResolveEventHandler(MyResolveEventHandler);


private Assembly MyResolveEventHandler(object sender, ResolveEventArgs args)
{

Assembly MyAssembly,objExecutingAssemblies = Assembly.GetExecutingAssembly();
AssemblyName[] arrReferencedAssmbNames = objExecutingAssemblies.GetReferencedAssemblies();
if(args.Name.Contains("Coyname.Product.Service.Scheduler"))
{
string assName = Parser.ParseAssemblyNameReference(args.Name);
var rootDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
var pluginDir = Path.Combine(rootDirectory, "Quartz");
pluginDir += string.Format("\\{0}.dll",assName);;
MyAssembly = Assembly.LoadFrom(pluginDir);
}
else
{
MyAssembly = Assembly.LoadFrom(string.Empty);
}
return MyAssembly;
}

关于c# - Quartz.net - 将程序集(单独的时间表)放在 then/bin 以外的不同文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10830551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com