.NET Core控制台Hello World示例无法运行问题求助
我来帮你分析下这个问题,你遇到的NU1101错误大概率和NuGet源配置或者SDK版本匹配有关,给你几个可行的解决办法:
1. 添加官方在线NuGet源
从你的dotnet nuget list source输出能看到,目前所有的NuGet源都是离线本地源。虽然你本地C:\Program Files\dotnet\packs目录里确实有这个包,但NuGet还原时可能因为源的索引逻辑没识别到它。你可以先添加官方在线源试试:
dotnet nuget add source https://api.nuget.org/v3/index.json --name nuget.org
添加完成后,重新执行dotnet restore,再尝试运行项目。
2. 修复或重新安装.NET Core 3.1.300 SDK
你的SDK版本是3.1.300,对应的Microsoft.AspNetCore.App.Ref包版本应该是3.1.3,虽然本地存在,但可能SDK安装时的索引文件有损坏。可以下载对应版本的SDK安装包,重新执行安装(选择修复选项或者覆盖安装),确保SDK安装完整。
3. 清除NuGet本地缓存
有时候本地NuGet缓存损坏会导致包查找异常,执行以下命令清除所有NuGet本地缓存:
dotnet nuget locals all --clear
清除完成后再执行dotnet restore和dotnet run,看是否能解决问题。
4. 检查是否存在global.json文件干扰
如果你的项目目录或者上级目录有global.json文件,它可能指定了其他版本的SDK,导致项目使用了不匹配的SDK版本运行。可以查看该文件内容:
Get-Content global.json
如果里面指定的SDK版本不是3.1.300,可以修改为你已安装的版本,或者直接删除该文件,让系统自动使用最新安装的SDK。
另外你提到切换到netcoreapp2.1就正常,这是因为.NET Core 2.1的ASP.NET Core相关依赖是通过共享运行时提供的,不需要单独从NuGet源还原;而3.1版本的项目依赖机制有调整,部分场景下需要NuGet源能正确识别到对应的引用包。
内容的提问来源于stack exchange,提问作者mangupt

