使用.NET 8构建时无法解析Microsoft.NETCore.App.Ref (=6.0.27)问题咨询
解决.NET 8构建时NU1100找不到Microsoft.NETCore.App.Ref的问题
错误信息
error NU1100: Unable to resolve 'Microsoft.NETCore.App.Ref (= 6.0.27)' for 'net6.0'.
问题背景
- 无网络环境下使用解压版.NET 8构建项目时触发该错误
- 此前使用.NET 6或更早版本时,依赖包会下载到
%user%.nuget目录,但.NET 8场景下(包括有网络的Visual Studio 2022安装版机器),该包并未下载到该目录
核心原因
从.NET 7开始,Microsoft.NETCore.App.Ref这类框架引用包不再通过NuGet.org下载,而是随对应版本的.NET SDK内置。解压版.NET 8 SDK默认不包含.NET 6的框架引用文件;而带.NET 8的Visual Studio 2022如果未勾选安装.NET 6 SDK组件,也不会自带这些文件。
解决方法
方法1:复制SDK内置的框架引用文件
- 在有网络的机器上,下载并安装匹配版本的.NET 6 SDK(6.0.27)
- 找到SDK安装目录下的框架引用包路径,Windows默认路径为:
C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.27 - 将整个
6.0.27文件夹复制到无网络机器的解压版.NET 8 SDK的packs目录下,例如:
若机器1的.NET 8解压在D:\dotnet-8-sdk,则目标路径为D:\dotnet-8-sdk\packs\Microsoft.NETCore.App.Ref\6.0.27
方法2:手动获取并部署框架引用包
- 在有网络环境下,找到
Microsoft.NETCore.App.Ref6.0.27版本的压缩包(可通过.NET官方发布渠道获取) - 解压压缩包,整理成
Microsoft.NETCore.App.Ref\6.0.27的目录结构,确保内部文件与SDK内置的一致 - 将该目录复制到无网络机器的.NET 8 SDK的
packs文件夹中
方法3:调整项目目标框架(临时方案)
如果无需针对net6.0构建,可修改项目的.csproj文件:
- 单目标框架:将
<TargetFramework>net6.0</TargetFramework>改为<TargetFramework>net8.0</TargetFramework> - 多目标框架:移除
net6.0项,例如将<TargetFrameworks>net6.0;net8.0</TargetFrameworks>改为<TargetFrameworks>net8.0</TargetFrameworks>
内容的提问来源于stack exchange,提问作者subbaraoc
相关产品推荐
相关产品推荐

