Visual Studio 2017部分NuGet引用组件找不到,VS2015可正常识别
我之前也碰到过一模一样的问题,不少.NET开发者从VS2015迁移到VS2017时都会遇到这类情况,核心原因是你安装的这些NuGet包本质上是为.NET Core/.NET Standard设计的,而.NET Framework 4.6及以上版本已经内置了这些程序集——VS2015的MSBuild对这种冲突的处理比较宽松,但VS2017采用了更严格的引用解析逻辑,就会出现"找不到引用"的报错。
具体修复步骤:
卸载冲突的NuGet包
这些包完全没必要在.NET Framework项目中安装,直接通过NuGet包管理器或者Package Manager Console卸载:# 逐个卸载有问题的包,示例: Uninstall-Package System.Data.Common -RemoveDependencies Uninstall-Package System.Net.Http -RemoveDependencies # 以此类推卸载其他列出的包加上
-RemoveDependencies可以避免残留不必要的依赖包。添加框架内置的程序集引用
卸载包后,右键项目 → 「添加」→ 「引用」→ 切换到「程序集」→ 「框架」标签,找到并勾选以下程序集:- System.Data.Common
- System.Net.Http
- System.Security.Cryptography.Algorithms等你需要的项
这些都是.NET Framework自带的,不需要额外安装。
清理并重建解决方案
- 手动删除项目目录下的
bin和obj文件夹,避免残留旧的编译文件 - 在VS2017中点击「生成」→ 「清理解决方案」
- 再点击「生成」→ 「重新生成解决方案」
- 手动删除项目目录下的
检查.csproj文件的残留配置(可选)
如果卸载包后仍有问题,可以手动打开.csproj文件,删除所有指向这些NuGet包的PackageReference或带HintPath的Reference节点,确保引用是干净的框架内置引用,比如:<Reference Include="System.Data.Common" />确认项目目标框架版本
右键项目 → 「属性」→ 「应用程序」标签,确认目标框架是你预期的版本(比如.NET 4.7.1),有时候目标框架配置异常也会导致引用解析失败。
补充说明你的复现场景:
你新建VS2017的.NET 4.7.1项目后安装这些包出现问题,正好验证了这个原因——这些NuGet包的设计目标不是.NET Framework,强行安装就会触发VS2017的严格校验逻辑,导致引用无效。
内容的提问来源于stack exchange,提问作者barrypicker

