升级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
相关产品推荐
相关产品推荐

