'命名空间"xxx"中不存在类型或命名空间名"xx"(是否缺少程序集引用)'-异常报错的原因


1、事故现场

编程语言:C#
编辑器:VS2019
事故上下文:
有三个程序集项目Resource.DAL、Resource.DTO和Resource.Utility,
DAL引用了DTO和Utility,DTO和Utility独立生成都没有问题,但是DAL生成的时候出现了很多报错,如图:
'命名空间"xxx"中不存在类型或命名空间名"xx"(是否缺少程序集引用)'-异常报错的原因
从报错上看,就是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、总结

因不同项目引用的某个相同程序集版本不一致,项目间又有引用关系,导致的生成报错;