某次asp.net5开发中遇到了一个很奇怪的问题,引用部分的nuget包没有显示任何错误,如下图:
但是编译时出现了几百个错误:
错误基本都是形如“CS0246 The type or namespace name 'Key' could not be found (are you missing a using directive or an assembly reference?) ”这种错误,
给人的第一感觉就是nuget包引用出了问题,但是不管你怎么检查就是查不出来哪里错了。
更离奇的是,这个解决方案在公司可以正常编译,晚上回家调试才出现了这种情况。后来仔细考虑了一下,因为当时那几天asp.net的beta7刚更新,中间捣鼓了挺长时间,就怀疑是dnx版本的问题。
然后就查了一下项目属性,发现解决方案工作在beta5下,而nuget程序包更新到了beta7,如图:
也就是引用包的版本和解决方案的工作版本不一致,要解决这个问题很简单,把工作版本也改成beta7版本即可:
然后重新编译,一切正常。
asp.net5开发中,类似的问题还有不少,特别是project.json中设置dependencies包的版本时,一定要注意,务必保持版本一致。