VS2022及IIS中网站无法运行,System.Runtime程序集加载失败求助
解决System.Runtime版本不匹配(HRESULT:0x80131040)问题的步骤
1. 核对项目目标框架与本地.NET SDK
- 右键项目→属性→应用,确认目标框架为.NET 6.x(错误提示需加载6.0.0.0版本)。
- 打开命令提示符,执行
dotnet --list-sdks,确认本地已安装.NET 6 SDK。若未安装,直接下载对应版本安装即可。
2. 重置NuGet依赖包
- 在VS的包管理器控制台执行
Update-Package -reinstall,强制重新安装所有依赖包,确保版本统一。 - 打开项目的
.csproj文件,检查所有<PackageReference>节点,确保System.Runtime的引用版本为6.0.0,示例:<PackageReference Include="System.Runtime" Version="6.0.0" />
3. 配置IIS运行环境
- 确认服务器已安装.NET 6 Hosting Bundle(IIS运行.NET 6网站的必需组件),安装完成后重启IIS。
- 打开IIS管理器,找到对应网站的应用程序池,设置**.NET CLR版本**为
无托管代码,管道模式选择集成。
4. 针对Fusion日志定位的路径修复
- 根据Fusion日志显示的加载失败路径,检查该路径下的
System.Runtime.dll版本是否为6.0.0.0:- 若路径是全局程序集缓存(GAC),执行
gacutil /l System.Runtime查看已注册版本,用gacutil /u System.Runtime, Version=xxx删除不匹配版本,再重新安装正确版本到GAC。 - 若路径是项目bin/obj目录或IIS站点bin目录,直接删除整个bin和obj文件夹,重新生成项目,确保输出正确版本的程序集。
- 若路径是全局程序集缓存(GAC),执行
5. 添加绑定重定向(可选)
- 在项目的
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-6.0.0.0" newVersion="6.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
内容的提问来源于stack exchange,提问作者user1263981
相关产品推荐
相关产品推荐

