今天测试quartz时,因为引用的顺序不对,或者说因为nuget自动添加待引用库所依赖的库的机制,导致的问题。
我引用的顺序是:
1、添加quartz的引用,如图
因为Quartz依赖于Common.Logging.dll所以nuget自动引用了Common.Logging.dll,但版本是2.1.2。
2、因为当前环境.net4.0所以不好引用common.logging.log4net,所以引用common.logging.log4net1211。
同样因为common.logging.log4net1211依赖log4net,所以nuget自动引用了log4net。
nuget的这种做法非常便捷,可以省去不少事情,但同时却也会导致一些问题的存在。
在上述情况下,编译时编译器会报 warning MSB3277 警告,google一番后无果,隐约觉得程序会有问题。果然不出所料,
程序报出异常ArgumentOutOfRangeException(以前是ConfigurationException,为啥?)。
导致这种异常出现的原因就是Common.Logging.dll版本不对导致。
调整添加引用的顺序为 Common.Logging => Common.Logging.Log4net1211 => Quartz,问题搞定。
I am always so jizhi.