添加ASP.NET Identity相关NuGet包后System.Runtime程序集加载失败求助
解决.NET Framework 4.7.1项目中System.Runtime 4.1.2.0加载失败的问题
针对你遇到的这个问题,我分享几个实际项目中验证过的解决思路,你可以逐个尝试:
1. 调整绑定重定向并强制NuGet复制依赖到输出目录
你已经安装了System.Runtime 4.3.0,但bin目录里没有对应的dll,而且手动配置的绑定重定向可能和实际依赖的程序集版本匹配逻辑有冲突。可以这么操作:
- 先确认System.Runtime的程序集版本:右键项目依赖中的System.Runtime,查看「属性」里的版本号(注意区分NuGet包版本和程序集版本,4.3.0的NuGet包对应的程序集版本确实是4.1.2.0)。
- 打开你的
.csproj文件,找到System.Runtime的PackageReference节点,修改为以下配置,确保它会被复制到输出目录:<PackageReference Include="System.Runtime" Version="4.3.0"> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <PrivateAssets>all</PrivateAssets> </PackageReference> - 保存后重新生成项目,检查bin目录是否出现
System.Runtime.dll。
2. 清理NuGet缓存并重置项目依赖
有时候NuGet缓存损坏或者依赖加载异常会导致这类问题:
- 打开Visual Studio,依次点击「工具」→「NuGet包管理器」→「程序包管理器设置」,在弹出的窗口中选择「清除所有NuGet缓存」。
- 右键你的项目,选择「卸载项目」,然后再右键点击项目重新加载。
- 执行「生成」→「清理解决方案」,然后手动删除项目的
bin和obj文件夹,最后重新生成整个解决方案。
3. 启用自动绑定重定向
手动配置的绑定重定向容易出错,让VS自动生成会更可靠:
- 打开
.csproj文件,确保添加了以下配置:<PropertyGroup> <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> </PropertyGroup> - 保存后重新生成项目,VS会自动根据依赖生成正确的绑定重定向到web.config中。
4. 检查ASP.NET Identity包的版本兼容性
你是添加了ASP.NET Identity相关包后出现的问题,大概率是版本不兼容导致的依赖冲突:
- 打开NuGet包管理器,查看所有Identity相关的包(比如
Microsoft.AspNet.Identity.Core、Microsoft.AspNet.Identity.Owin等),尝试将它们更新到与.NET Framework 4.7.1兼容的最新版本,或者回退到稳定的旧版本(比如2.x系列,具体看你的项目需求)。
5. 手动复制dll到输出目录
如果上面的方法都没效果,可以试试手动操作兜底:
- 找到NuGet缓存中System.Runtime.dll的位置,一般路径是
C:\Users\<你的用户名>\.nuget\packages\system.runtime\4.3.0\lib\net462(net462是兼容4.7.1的)。 - 复制该目录下的
System.Runtime.dll到项目的bin目录中,然后右键该文件,设置「复制到输出目录」为「如果较新则复制」。
内容的提问来源于stack exchange,提问作者Andrey Korneyev
相关产品推荐
相关产品推荐

