.NET 6 Azure Functions执行Scaffold后程序集加载失败求助
解决Azure Functions .NET6下Microsoft.Extensions.Logging.Abstractions程序集加载失败问题
这个问题本质是EF Core Scaffold命令引入了.NET7版本的依赖,和你的.NET6项目版本冲突导致的,以下是具体解决步骤:
检查并修正项目依赖版本
打开项目的.csproj文件,确认所有PackageReference中:Microsoft.Extensions.Logging.Abstractions的版本为6.x.x(比如6.0.25),如果是7.x版本,直接修改为6.x稳定版;Microsoft.EntityFrameworkCore系列包(包括SqlServer、Tools等)的版本也必须是6.x.x,Scaffold命令默认可能会安装7.x版本,这会间接引入高版本的Logging依赖。
清理并重新还原依赖
在Visual Studio的包管理器控制台执行命令:dotnet clean dotnet restore或者通过右键项目→清理,再右键→还原NuGet包完成操作。
添加程序集重定向(若上述步骤无效)
在项目中创建或修改app.config文件,加入重定向配置,让运行时将7.0.0.0版本的请求导向已安装的6.x版本:<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="6.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>注意将
newVersion替换为你实际安装的6.x版本号。重新执行Scaffold时指定兼容版本
后续再执行Scaffold命令,务必指定EF Core的6.x版本,避免再次引入高版本依赖,示例命令:Scaffold-DbContext "你的数据库连接字符串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -ContextDir Data -Context YourDbContext -Force -Version 6.0.25清理本地NuGet缓存
如果本地缓存存在损坏的包,可能导致版本加载异常,执行命令清理缓存后重新还原:dotnet nuget locals all --clear
内容的提问来源于stack exchange,提问作者Juan Sebastin Plaza Ballestero
相关产品推荐
相关产品推荐

