.NET Framework 4.6.1 MVC项目升级NuGet后出现CS0012运行时错误
解决.NET Framework 4.6.1 MVC项目升级NuGet包后出现的CS0012错误
这个问题我之前处理过好几次,核心原因是你升级的NuGet包引入了对.NET Standard 2.0的依赖,而.NET Framework 4.6.1虽然原生支持.NET Standard 2.0,但需要手动配置让编译器正确识别这个依赖。下面是几个经过验证的解决步骤:
1. 在Web.config中添加netstandard程序集引用
直接在项目根目录的Web.config文件里,找到<compilation>节点,在其下的<assemblies>部分添加以下引用:
<add assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" />
如果你的Web.config里没有<assemblies>节点,就手动创建一个完整的结构:
<compilation debug="true" targetFramework="4.6.1"> <assemblies> <add assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" /> </assemblies> </compilation>
2. 检查NuGet包的兼容性
部分NuGet包升级后可能会放弃对.NET Framework 4.6.1的支持,或者依赖了更高版本的.NET Standard。你可以:
- 打开NuGet包管理器,查看每个升级后包的依赖详情,确认它们是否明确标注支持.NET Framework 4.6.1
- 如果发现某个包存在兼容性问题,尝试降级到该包支持.NET Framework 4.6.1的最新版本
3. 清理项目缓存并重建
缓存的旧编译文件或NuGet包缓存经常会导致这类奇怪的编译错误,执行以下操作:
- 在Visual Studio中点击菜单栏的
生成->清理解决方案 - 接着点击
生成->重建解决方案 - 清除NuGet缓存:打开NuGet包管理器设置,找到
清除所有NuGet缓存选项并执行
4. 确认项目目标框架未被篡改
升级NuGet包时,偶尔会不小心修改项目的目标框架。右键项目选择属性 -> 切换到应用程序标签页,确认目标框架是.NET Framework 4.6.1,如果不是改回即可。
另外补充一点:虽然你安装了.NET Core SDK 2.0,但.NET Framework项目需要的是对应的.NET Framework运行时,确保你的开发环境中.NET Framework 4.6.1是完整安装的状态。
内容的提问来源于stack exchange,提问作者empz




