升级.NET目标框架至4.6/4.7.2后缺失System.Runtime引用报错求助
问题原因
该报错是升级.NET Framework版本后,项目依赖的第三方组件(比如你用到的12.0版本Newtonsoft.Json或其他基于.NET Standard实现的库)依赖System.Runtime 4.0.0.0门面程序集,但传统.NET Framework Web项目默认不会在编译配置中自动添加该程序集的引用,导致运行时编译代码/视图时找不到对应基础类型。
解决方案
步骤1:修正web.config版本一致性
你升级到4.7.2时,httpRuntime的targetFramework要和compilation节点版本统一,避免版本适配冲突:
<httpRuntime targetFramework="4.7.2" maxRequestLength="1024000" executionTimeout="150000"/> <compilation targetFramework="4.7.2" debug="true">
步骤2:添加System.Runtime编译引用
在compilation节点下新增assemblies子节点,手动注册System.Runtime程序集:
<compilation targetFramework="4.7.2" debug="true"> <assemblies> <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </assemblies> </compilation>
步骤3:清理缓存重新编译
- 关闭Visual Studio
- 删除项目根目录下的
obj、bin文件夹 - 删除
C:\Users\[你的系统用户名]\AppData\Local\Temp\Temporary ASP.NET Files路径下对应项目的缓存目录 - 重新打开Visual Studio,还原NuGet包后重新编译运行
补充验证项
如果仍有报错,手动添加项目级引用:
- 右键项目→引用→添加引用→程序集→框架→找到
System.Runtime勾选确认 - 选中引用的
System.Runtime,在属性面板将「复制本地」设置为False,.NET Framework 4.6+已经内置该程序集,不需要随项目发布。
内容的提问来源于stack exchange,提问作者Jefferson
相关产品推荐
相关产品推荐

