You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Framework下ASPX页面引用DLL遇System.Runtime程序集找不到问题

问题本质与解决办法

为什么会报错?

你碰到的是典型的跨.NET平台程序集兼容性冲突:.NET Core 3.1编译的MyLib.dll依赖的是.NET Core生态下的System.Runtime 4.2.2.0版本,但你的ASP.NET Web应用基于.NET Framework运行,它的程序集加载机制无法识别这个.NET Core专属的程序集版本——控制台应用能正常运行,要么是因为控制台本身就是.NET Core环境,要么是.NET Framework控制台通过隐式兼容包做了适配,但老ASP.NET环境没有这个适配逻辑。

可行的解决路径

1. 把类库改成.NET Standard 2.0(推荐)

.NET Standard是专门用来实现跨.NET平台兼容的标准,.NET Framework 4.6.1+和.NET Core 3.1都完美支持.NET Standard 2.0,这样你的类库能同时在两种环境下正常工作:

  • 打开MyLib的项目文件(.csproj),把目标框架改成:
    <TargetFramework>netstandard2.0</TargetFramework>
    
  • 重新编译类库,替换ASP.NET项目里的旧引用即可。

2. 给ASP.NET项目加程序集绑定重定向

如果暂时没法修改类库,可通过配置强制.NET Framework加载兼容的System.Runtime版本:

  • 打开ASP.NET项目的web.config,在<configuration>节点内添加以下配置:
    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
          <bindingRedirect oldVersion="0.0.0.0-4.2.2.0" newVersion="4.0.0.0" />
        </dependentAssembly>
      </assemblyBinding>
    </runtime>
    
    提示:newVersion可以根据你项目中实际存在的System.Runtime版本调整,.NET Framework 4.7及以上一般用4.0.0.0就能兼容。

3. 升级ASP.NET项目到.NET Core

如果项目允许重构,直接把旧的ASP.NET Web应用升级为ASP.NET Core项目,这样和你的.NET Core 3.1类库环境完全匹配,从根源上解决兼容性问题。

验证步骤

  • 先清理整个解决方案(菜单选Build -> Clean Solution)
  • 重新生成所有项目(Build -> Rebuild Solution)
  • 再测试ASPX页面是否正常运行

内容的提问来源于stack exchange,提问作者Jvhkl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 04:40:34