.NET 6 Web API中Serilog配置扩展方法迁移及WebApplicationBuilder引用问题
问题还原
我有如下Serilog配置,希望将其迁移为扩展方法:
var builder = WebApplication.CreateBuilder(args); builder.Host.UseSerilog((ctx, lc) => _ = builder.Environment.IsDevelopment() ? lc.WriteTo.Console() : lc.WriteTo.AzureBlobStorage());
但在独立类库中编写以下扩展方法时,无法找到WebApplicationBuilder的引用:
public static void ConfigureSerilog(this WebApplicationBuilder builder) { }
报错信息:
找不到类型或命名空间名称“WebApplicationBuilder”(是否缺少 using 指令或程序集引用?)
解决方案
添加必要的框架依赖
WebApplicationBuilder属于ASP.NET Core框架组件,独立类库需要引入对应的依赖:- 使用.NET CLI执行命令:
dotnet add package Microsoft.AspNetCore.App - 使用Package Manager Console执行:
Install-Package Microsoft.AspNetCore.App - 或直接编辑类库的
.csproj文件,添加框架引用(SDK风格项目推荐):<ItemGroup> <FrameworkReference Include="Microsoft.AspNetCore.App" /> </ItemGroup>
- 使用.NET CLI执行命令:
引入命名空间
在扩展方法所在的类文件顶部,添加using指令:using Microsoft.AspNetCore.Builder; using Serilog;实现完整扩展方法
将Serilog的配置逻辑移入扩展方法:public static class SerilogExtensions { public static void ConfigureSerilog(this WebApplicationBuilder builder) { builder.Host.UseSerilog((ctx, lc) => { if (builder.Environment.IsDevelopment()) { lc.WriteTo.Console(); } else { lc.WriteTo.AzureBlobStorage(); } }); } }在Web项目中调用扩展方法
在Web项目的Program.cs里直接调用扩展方法即可:var builder = WebApplication.CreateBuilder(args); builder.ConfigureSerilog();
内容的提问来源于stack exchange,提问作者user584018
相关产品推荐
相关产品推荐

