ASP.NET Core 2.x升级后类库项目NETStandard.Library引用异常问题
修复.NET Framework类库项目中NETStandard.Library引用显示黄色断裂的问题
我之前处理过好几个类似的升级后引用显示异常的案例,其实这只是Visual Studio的“视觉bug”——毕竟你能正常构建且没有警告错误,就说明项目的依赖链路是完全通的。下面是几个亲测有效的修复步骤:
清理Visual Studio组件缓存
这是最常见的解决办法,VS的组件缓存有时候会卡住旧的依赖信息:- 完全关闭Visual Studio
- 打开文件资源管理器,导航到
%LOCALAPPDATA%\Microsoft\VisualStudio\15.0_<你的VS唯一标识>\ComponentModelCache(把<你的VS唯一标识>换成你电脑里对应的文件夹名,比如类似abcdef12的字符串) - 删除这个文件夹里的所有文件
- 重新启动Visual Studio,检查引用状态
检查并手动修复项目文件
升级过程中项目文件可能残留旧配置,导致VS识别异常:- 右键出现问题的类库项目,选择「编辑.csproj」
- 确认
<TargetFramework>节点的值是net461,比如:<TargetFramework>net461</TargetFramework> - 找到
NETStandard.Library的包引用节点,如果版本是2.0.2,可以尝试删除该节点,然后通过NuGet包管理器重新安装兼容.NET Framework 4.6.1的最新版本(比如2.0.3) - 保存项目文件,右键项目选择「重新加载项目」
清理NuGet缓存并重新还原
NuGet缓存损坏也可能导致VS显示错误的引用状态:- 打开Visual Studio的「工具」→「选项」→「NuGet包管理器」→「常规」
- 点击「清除所有NuGet缓存」按钮
或者用命令行更彻底:打开命令提示符,运行
nuget locals all -clear- 右键解决方案,选择「还原NuGet包」,等待还原完成后重新检查引用
重置Visual Studio用户数据(终极方案)
如果上面的方法都无效,可以尝试重置VS的用户配置(注意:这会重置你的窗口布局、快捷键等个性化设置,建议先备份):- 关闭所有VS窗口
- 打开命令提示符,运行
devenv /resetuserdata- 重新启动VS,加载解决方案查看引用状态
为什么会出现这种情况?
在从ASP.NET Core 1.1升级到2.x、同时把目标框架从.NET 4.5.2升级到4.6.1的过程中,Visual Studio的项目系统没有及时同步NuGet包的最新状态,旧的缓存信息和新的项目配置冲突,导致引用显示为黄色断裂,但实际NuGet已经正确还原了所有依赖,所以构建不受影响。
内容的提问来源于stack exchange,提问作者mikeo




