ASP.NET Core Angular项目调试时遇System.IO.FileLoadException异常求助
解决ASP.NET Core Angular应用调试时System.IO.FileLoadException问题
我之前在使用VS2017的Angular模板构建ASP.NET Core 2.0应用时,也碰到过一模一样的版本不匹配问题,给你几个亲测有效的解决办法:
1. 对齐.NET Core SDK和Runtime版本
你当前使用的Microsoft.AspNetCore.All是2.0.7,但Microsoft.NETCore.App是2.0.0,两者版本差导致依赖的程序集版本不兼容。ASP.NET Core 2.x系列中,元包和基础运行时的版本最好保持同分支的最新稳定版:
- 下载安装.NET Core SDK 2.0.x分支的最新版本(比如2.0.9,是2.0分支的最后一个稳定版)
- 打开项目的
.csproj文件,确保RuntimeFrameworkVersion指向正确的版本,比如:<PropertyGroup> <TargetFramework>netcoreapp2.0</TargetFramework> <RuntimeFrameworkVersion>2.0.9</RuntimeFrameworkVersion> </PropertyGroup> - 重启Visual Studio,重新恢复包并构建项目
2. 启用自动程序集绑定重定向
ASP.NET Core虽然自带依赖解析,但有时候还是需要绑定重定向来解决版本冲突:
- 在项目的
.csproj文件中添加以下配置:<PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup> - 清理并重建项目,系统会自动在
web.config中生成正确的绑定重定向规则,解决System.ComponentModel.Primitives的版本加载问题
3. 清理项目和NuGet缓存
有时候旧的缓存文件会干扰依赖解析:
- 右键项目 → 选择「清理」,再右键解决方案 → 「清理解决方案」
- 删除项目目录下的
bin和obj文件夹 - 打开NuGet包管理器控制台,运行以下命令清除本地NuGet缓存:
dotnet nuget locals all --clear - 执行
dotnet restore恢复所有依赖,再重新构建调试
4. 检查第三方包的版本冲突
如果你的项目引用了其他第三方NuGet包,可能其中某些包依赖了更高版本的System.ComponentModel.Primitives,导致版本冲突:
- 打开「管理解决方案的NuGet包」,切换到「已安装」标签
- 查看所有包的依赖关系,找到引用了
System.ComponentModel.Primitives的包,尝试将其更新到兼容ASP.NET Core 2.0.x的版本
问题根源说明
这个异常本质是Microsoft.AspNetCore.All 2.0.7依赖的System.ComponentModel.Primitives版本(4.2.0.0)和Microsoft.NETCore.App 2.0.0自带的版本不一致,导致CLR加载程序集时找不到匹配的版本,从而抛出FileLoadException。
内容的提问来源于stack exchange,提问作者SillyPerson
相关产品推荐
相关产品推荐

