引入Microsoft.Extensions.Hosting引发Microsoft.Extensions.Logging.Abstractions加载错误求解决
解决方案:修复Microsoft.Extensions.Logging.Abstractions加载错误
错误原因
Microsoft.Extensions.Hosting 7.0.0内部依赖Microsoft.Extensions.Logging.Abstractions 7.0.0.0,用于处理主机启动、配置加载等流程的日志抽象逻辑。移植项目时,新项目可能未自动拉取该依赖包,或存在版本冲突,导致程序集加载失败。
具体解决步骤
1. 手动安装缺失的依赖包
打开NuGet包管理器控制台,执行以下命令安装对应版本的包:
Install-Package Microsoft.Extensions.Logging.Abstractions -Version 7.0.0
或通过Visual Studio的NuGet包管理器界面,搜索并安装该包的7.0.0版本。
2. 清理项目并重建
- 右键项目,选择清理
- 删除项目目录下的
bin和obj文件夹 - 重新生成项目,确保所有依赖正确编译和复制
3. 统一相关包版本
检查项目中所有Microsoft.Extensions.*系列的NuGet包版本,确保它们保持一致(均为7.0.0版本)。混合不同版本的Microsoft.Extensions组件极易引发程序集加载冲突。
4. 添加程序集绑定重定向(仅适用于.NET Framework项目)
如果你的项目是.NET Framework,在app.config或web.config中添加以下绑定重定向配置,强制程序使用正确版本的程序集:
<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="7.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime>
5. 验证User Secrets配置
- 右键项目,选择Manage User Secrets,确认连接字符串已正确配置
- 确保你的HostBuilder代码正确加载了User Secrets配置,示例代码如下:
var host = Host.CreateDefaultBuilder() .ConfigureAppConfiguration((context, config) => { if (context.HostingEnvironment.IsDevelopment()) { config.AddUserSecrets<Program>(); } }) .Build();
内容的提问来源于stack exchange,提问作者Alexander Thomsen
相关产品推荐
相关产品推荐

