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

升级System.Runtime.CompilerServices.Unsafe至6.0.0后IIS加载程序集失败求助

解决ASP.NET MVC 4.8升级Unsafe包后ResourceManager加载失败问题

问题原因

.NET Framework 4.8与高版本的System.Runtime.CompilerServices.Unsafe(如6.0.0)存在兼容性冲突,高版本包可能依赖于更高版本的系统程序集,而4.8默认提供的System.Resources.ResourceManager为4.0.0.0版本,导致程序集绑定失败。

解决方案

1. 配置程序集绑定重定向

在项目的web.config文件的<runtime>节点下添加绑定重定向规则,强制所有版本的System.Resources.ResourceManager使用4.8对应的版本:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <!-- 保留其他已有的绑定规则 -->
    <dependentAssembly>
      <assemblyIdentity name="System.Resources.ResourceManager" 
                        publicKeyToken="b03f5f7f11d50a3a" 
                        culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" 
                       newVersion="4.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

2. 降级System.Runtime.CompilerServices.Unsafe包

由于.NET Framework 4.8对6.0.0版本的Unsafe包兼容性有限,建议降级到与4.8更匹配的版本(如4.7.2):

  • 打开NuGet包管理器控制台,执行命令:
    Install-Package System.Runtime.CompilerServices.Unsafe -Version 4.7.2
    
  • 或在NuGet包管理器界面中找到该包,选择4.7.2版本进行安装。

3. 清理并重建项目

  • 删除项目目录下的bin和obj文件夹,清除旧的编译输出。
  • 在Visual Studio中执行清理解决方案,然后重建解决方案。
  • 重启IIS或IIS Express,确保新的程序集被正确加载。

4. 检查间接依赖冲突

使用NuGet包管理器的依赖项视图,查看是否有其他第三方包间接引用了更高版本的System.Resources.ResourceManager,如果存在,尝试升级或降级相关依赖包以保持版本一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 12:59:51