我是Quartz.Net的新手,我一直在按照
this教程完成我的第一份工作.
我遵循每一步,从零开始3次,但我无法使其发挥作用.
当我在Visual Studio上运行项目时,我从cmd获取此消息:
Failed: Could not load file or assembly: 'HelloWorldDotNet, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
在Visual Studio输出中,我得到:
‘HelloWorldQuartzDotNet.vshost.exe’ (Managed (v4.0.30319)): Loaded ‘C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Configuration\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll’, Skipped loading symbols. Module is optimized and the debugger option ‘Just My Code’ is enabled.
no configuration section found – suppressing logging output
‘HelloWorldQuartzDotNet.vshost.exe’ (Managed (v4.0.30319)): Loaded ‘C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Runtime.Remoting\v4.0_4.0.0.0__b77a5c561934e089\System.Runtime.Remoting.dll’
A first chance exception of type ‘System.IO.FileNotFoundException’ occurred in mscorlib.dll
我无法理解mscorlib.dll是什么…我试图搜索它,我无法到达任何地方.
我在Windows 8上使用最新版本的Quartz.Net 2.2.1.
最佳答案 下载项目并按照分步教程后,我在调试器中花了一些时间后发现它有问题.因此,教程将从客户端的角度指导您使用Quartz.NET,并且没有任何问题.代码正在建设中,一切都像魅力一样.问题出在项目的服务器端,并且您获得的错误是从运行Quartz.NET服务器实现的服务发送的.抛出异常的行是:
// Line 40 | ScheduleJob.cs
var schedule = schd.ScheduleJob(job, trigger);
这里发生的事情是调度程序被告知实现IJob接口的HelloWorldJob类的名为WriteHelloToConsole的新作业.一旦服务器收到此信息,他就会尝试在他的应用程序域中找到该DLL(这里有问题).但是,Quartz.NET服务器域(文件夹)中没有HelloWorldJob,因为您已直接从SourceForge服务器下载它.这就是你无法加载文件或程序集的原因.
解决方案很简单,但不推荐,但本教程足够.您只需将HelloWorldQuartzDotNet.exe复制/粘贴到Quart.NET服务文件夹中,然后从Windows服务启动/停止服务即可.执行此操作后,它将在Quartz.NET服务器应用程序域中加载HelloWorldJob类(以及HelloWorldQuartzDotNet.exe中的其他类).
其他项目的推荐解决方案,特别适用于生产.为每个人创建单独的DLL,因此一个用于IJob类的DLL和用于Quartz.NET的单独DLL.添加对客户端的引用并将DLL复制/粘贴到服务.通过这种方式,您可以将所有内容分离,并获得可维护的解决方案.
如果您需要有关.NET应用程序域如何工作的更多信息,可以从link获取它.
注意:
使用Quartz .NET开始/学习/玩的最佳方式是使用他们的文档.有一个方便的教程,介绍如何设置从小型控制台应用程序到Windows服务的所有内容.我已经多次实现它,只使用文档.
07001
我愿意为任何特定问题提供帮助.