如何抑制NuGet还原NU1202错误?自定义可信包兼容问题处理
解决NuGet还原错误NU1202的方案
一、临时抑制错误
如果仅需快速绕过错误完成构建,可采用以下方法:
- 针对单个包抑制:在项目文件(.csproj)的对应
PackageReference节点中添加NoWarn属性:<PackageReference Include="你的自定义包名" Version="x.x.x" NoWarn="NU1202" /> - 全局抑制项目内该错误:在项目文件的
PropertyGroup中添加全局忽略配置:<PropertyGroup> <NoWarn>$(NoWarn);NU1202</NoWarn> </PropertyGroup> - 命令行还原时忽略:执行还原命令时添加忽略参数:
dotnet restore --ignore-warnings NU1202 # 或使用nuget cli nuget restore -IgnoreWarnings NU1202
二、针对自行开发可信包的长期处理
由于你的包仅支持net48,而.NET 6+对包兼容性检查更严格(此前net3.1仅为警告,net6升级后触发错误),推荐以下长期方案:
1. 升级自定义包,添加net6.0目标框架
修改自定义包的项目文件,扩展目标框架列表:
<TargetFrameworks>net48;net6.0</TargetFrameworks>
重新打包发布后,net6项目可直接兼容,从根源解决兼容性问题。
2. 强制项目兼容net48包(仅可信包适用)
若暂时无法升级包,可在net6测试项目的PropertyGroup中添加兼容配置:
<PropertyGroup> <AssetTargetFallback>$(AssetTargetFallback);net48</AssetTargetFallback> </PropertyGroup>
该配置会让NuGet认为net6项目可使用net48的包,消除兼容性错误。
适配你的场景
你的解决方案包含net3.1项目,仅测试项目升级至net6:
- 短期快速解决:给测试项目的自定义包引用添加
NoWarn="NU1202",或配置AssetTargetFallback。 - 长期最优解:升级自定义包以支持net6.0,避免后续其他项目升级框架时重复出现问题。
内容的提问来源于stack exchange,提问作者kosnkov
相关产品推荐
相关产品推荐

