升级.NET 6后Web项目运行报System.Security.Cryptography编译库找不到错误求解
排查思路
- 升级MiniProfiler版本:你当前使用的
MiniProfiler.AspNetCore.Mvc 4.2.2版本针对旧.NET Core版本开发,对.NET 6的Razor运行时编译逻辑存在兼容缺陷,优先升级到适配.NET 6的最新稳定版,可解决绝大多数版本兼容导致的引用异常。 - 校验项目文件配置:打开项目根目录的
.csproj文件,确认PropertyGroup节点下添加了以下两个配置,确保编译时保留完整的依赖引用上下文,供Razor运行时编译读取:<PreserveCompilationContext>true</PreserveCompilationContext> <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles> - 调整Razor运行时编译逻辑:
如果你不需要开发时的Razor视图热更新,可直接移除Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation包的引用,改为发布时预编译Razor视图,即可绕过该引用检查错误。
如果需要保留运行时编译能力,可在注册服务时过滤掉加密相关包的引用检查:builder.Services.AddControllersWithViews() .AddRazorRuntimeCompilation(options => { options.AdditionalReferencePaths = options.AdditionalReferencePaths .Where(p => !p.Contains("System.Security.Cryptography")) .ToList(); }); - 清理残留缓存:删除项目的
bin、obj文件夹,执行dotnet nuget locals all --clear清理本地NuGet缓存后,重新还原包、编译运行,排除旧依赖缓存导致的加载异常。 - 统一加密类包版本:确认所有
System.Security.Cryptography开头的NuGet包版本一致,.NET 6已内置大部分加密相关的基础库,无特殊需求无需额外安装独立的低版本加密包,避免版本冲突。
内容的提问来源于stack exchange,提问作者Sha
相关产品推荐
相关产品推荐

