记一次VS2022升级.Net7导致原来的.Net6项目编译失败,最后不断排查直到解决的思路与心得【错误编码:NETSDK1045】(sdk排查 -> 分析器排查 -> VS2022升级日志排查)

什么问题?

.net6的项目编译失败,提示【NETSDK1045 当前 .NET SDK 不支持将 .NET 6.0 设置为目标。请将 .NET 5.0 或更低版本设置为目标,或使用支持 .NET 6.0 的 .NET SDK 版本。】
在这里插入图片描述

如何出现的该问题?

把VS2022升级到最新版本(17.4),升级完之后,之前的.net5项目都可以正常编译成功,但是.net6的项目编译失败,提示该错误。

错误分析

1.上述报错的意思就是当前检测到的.net sdk最高只支持到.net5,要想编译此项目,要么将该项目设置为.net5,要么就去下载.net6 sdk;
2.我本地一直是有.net6 sdk的,这个项目之前也是可以正产编译运行的;
3.用命令dotnet --list-sdks,也是可以看到我本地.net5,.net6,.net7的sdk都有的;
在这里插入图片描述

尝试的解决办法

重新修复VS2022,再次检查.net6相关组件是否都已勾选

重新修复VS2022,再次检查以及确认.net6相关组件都已勾选,然后电脑重启,重新打开项目,仍然提示该错误。

将VS2022版本回滚(和VS版本关系应该不大,故放弃)

一直提示的.net sdk版本的问题,所以和VS版本应该没啥关系,最后实在是没有办法的话可以再尝试这一步,但是这个肯定不是解决问题的核心,肯定是回滚带来的.net sdk版本的变化。

技术群请教(未得到有效的答案)

在几个技术群里说明了该问题,但是大家大部分都没有遇到过这种问题,有几个给出的答案是.net sdk版本不对,但是并没有给出实际的解决办法。

自己思考,琢磨…(此轮耗时最久)

自己想了很多,也尝试了很多解决方案,但是问题并没有解决。

找到问题方向(.net分析器)

思考良久,突然发现一个思路突破口,编译不通过,看了下,项目依赖的分析器是黄的,也就意味着提示sdk不正确,加上我电脑本身一直是有.net6 sdk的,故问题方向可以确定:
本机有.net6 sdk,但是分析器解析结果不出来,解析出来的结果是没有.net6 sdk的。

顺着.net分析器向下排查

看了项目的分析器报黄,而且直接给出了分析器的位置,说明是使用的这个位置的分析器解析的项目的csproj的targetFramework对应的.net sdk:
1.找到该位置的dotnet.exe,点击分析器同文件夹的sdk文件夹进去,发现确实只有.net5 sdk,并没有.net6 sdk,也没有.net7 sdk;
在这里插入图片描述
在这里插入图片描述

2.上述结果说明,哪怕我现在有一个.net7的项目,只要不是自己创建的,现在打开依然编译不通过,还是分析器的问题;
3.此时已经很清晰了,分析器解析的是同级的sdk文件夹中的sdk,如果没有相应版本的,编译就会不通过,提示该异常;
4.只需要找到电脑里.net6的sdk,然后复制一份到该文件夹即可编译成功;

解决问题(将.net6 sdk放在分析器解析的文件夹中)

1.VS安装自己会带.net sdk,通常是在【C:\Program Files\dotnet】这个文件夹;
2.我们打开这个文件夹,里面有一个sdk的文件夹,打开,果然,里面.net5,.net6,.net7的sdk都在;
在这里插入图片描述

3.将.net6 sdk的文件夹,复制到刚刚.net分析器统计的sdk文件夹;
4.重启VS,重新生成项目,perfect,生成成功!
在这里插入图片描述

刨根问底(为何VS2022升级,会将.net sdk都移动了位置,或者说.net的分析器的位置都改变了?)

之前没问题,升级了VS就出现了该问题,究竟为何,我来看下升级日志:
1.打开cmd,输入%temp%,打开系统临时文件夹,里面会有系统最近的操作日志;
2.我们要找.net6,那么就直接在文件夹搜索【.NET_SDK_6】,然后等待搜索结束,慢慢排查,这都是.net6 sdk相关的日志;
在这里插入图片描述

3.通过排查发现,今晚升级VS时,.net6 sdk确实是升级到了最新版本,添加位置也是正常位置【C:\Program Files\dotnet】,但是为何新升级的.net sdk在默认文件夹,而不在.net分析器对应的文件夹里呢?
4.应该是由于我之前.net5的项目,自己下载了.net5 sdk,然后没有和VS默认安装的路径一致导致的,后续使用我这个自定义路径的.net分析器,就找不到系统默认安装的sdk了。

Ending

Ending~

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值