1、事故现场
编程语言:C#
编辑器:VS2019
事故上下文:
有三个程序集项目Resource.DAL、Resource.DTO和Resource.Utility,
DAL引用了DTO和Utility,DTO和Utility独立生成都没有问题,但是DAL生成的时候出现了很多报错,如图:
从报错上看,就是DAL引用DTO和Utility没有成功,但是,DTO和Utility两个程序集单独生成是成功的;更诡异的现象是,双击某个报错,导引到具体报错位置,代码处却没有报错提示,且那个报错也会在错误列表中消失,从新生成,那些报错依旧在;
2、分析原因及解决方案;
因为DTO和Utility单独生成没问题,说明DAL和DTO、Utility的应用依赖有冲突,回想之前的操作,在DAL项目中添加了“Newtonsoft.Json”的引用,立刻想到应该是DAL中应用的版本和DTO、Utility引用的版本不一致;
经过确认,果然不出所料,DAL引用的版本为 6.0.8,DTO和Utility引用的版本为6.0.3,当初引用的时候只注意了大的版本号,没有注意小的版本号。
最后,统一了“Newtonsoft.Json”的版本,错误都消失了。
3、总结
因不同项目引用的某个相同程序集版本不一致,项目间又有引用关系,导致的生成报错;