dotnet core项目引用的sdk升级后,项目编译失败

前几天发布了dotnet core 3.1正式版,然后我把之前基于3.0开发的项目升级到3.1后,在用控制台使用dotnet run命令,却出现“当前SDK不支持3.1,请把项目目标框架降到3.0或更早的版本”的报错信息。

第一反应是查看电脑是否已经安装了最新的sdk。在电脑的“卸载或更改程序”中能搜索到3.1的sdk,并且在控制台下用dotnet --info 查看了之后,发现sdk和runtime都是有3.1的。这个时候感觉有点奇怪。使用dotnet --version命令查看版本,是为最新的3.1.100版本。

观看错误输出信息,发现报错信息里引用的sdk路径还是3.0的路径。

这个时候就觉得是否有某种解析缓存导致的用了旧的sdk,因此查阅dotnet官方文档,看是否有清除缓存的方法。之后使用了认为能清除缓存的命令dotnet run --force,也是失败。

然后在项目路径下,增加global.json文件,sdk指向3.1.100,重新运行dotnet run,还是失败。

然后在vs里尝试编译项目,编译通过。

之后觉得在vs编译成功后,dotnet命令也应该能运行成功了(以为vs编译会覆盖缓存),但是结果还是失败。

尝试运行dotnet clean命令清除之前的编译生成文件,结果也是报dotnet run的错误。然后删除调obj文件夹再尝试,还是失败。

这个时候在想,是不是在系统的环境变量中设置了某些东西,导致dotnet的路径解析出了问题。然后翻看环境变量,发现设置了MSBuildSdksPath,值是指向3.0的sdk路径。删除之,重新运行,成功。

猜你喜欢

转载自www.cnblogs.com/chikychan/p/12003680.html