使用nuget的陷阱

本文记录了一次使用Quartz.NET过程中遇到的版本冲突问题。由于NuGet包管理器自动引入依赖项的方式不当,导致Common.Logging与log4net版本不匹配,最终引发运行时异常。通过调整依赖项的引入顺序解决了此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天测试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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值