问题描述与问题分析
.net6的Winform项目编译失败,提示【NU1105:无法读取“Program”的项目信息,无效的框架标识符】、【NETSDK1013:未识别TargetFramework值“net6.0-windows”。可能是因为拼写错误。如果拼写正确,必须显示指定TargetFrameworkIdentifier和/或TargetFrameworkVersion属性】
初步判断是与.net框架相关,网上找了一圈没找到解决方法。想看看其他类型的项目有没有类似的问题,于是新建控制台应用程序,提示【MSB3971:找不到“.NETFramework,Version=v6.0的引用程序集。你可能正在使用较早的.NET SDK,将.NET5.0或更高版本设置为目标。请更新Visual Studio和/或.NET SDK”】。
控制台应用程序的问题说明解释得非常清楚,.NET6.0的SDK发生了丢失,但是在安装VS2022的时候我已将.NET6.0的SDK进行了下载。因此出现这种问题可能的原因是下载的位置与程序查找的路径不一致,导致程序编译的时候没有找到它。
问题的解决方法
1、首先查看自己是否在电脑中安装了.NET6.0的SDK。下载的SDK的存放路径一般为“C:\Program Files\dotnet\sdk”。如下,可以看见我是下载了.NET6.0和7.0的SDK的。
2、在CMD输入命令dotnet --list-sdks查看程序查找SDK的路径。程序查找的路径一般与下载时的路径是一致的,都应该是“C:\Program Files\dotnet\sdk”,但是本人的不知道为什么在“C:\Program Files(x86)”文件夹中,显然在该文件夹中当然是找不到.NET6.0的SDK了。
3、将.NET6.0和7.0的SDK复制粘贴到程序查找SDK的路径下的文件夹中。此时再输入命令dotnet --list-sdks,如下,可以看到程序可以搜索到.NET6.0的SDK了。
4、打开之前的Winform程序,不再报错,成功运行。