.NET 6开发Windows服务遇IServiceCollection无Configuration定义编译错误
问题原因
IServiceCollection 接口本身不包含Configuration属性或对应的扩展方法,你遇到的IntelliSense提示属于误报,你当前已引用的两个NuGet包已经满足.NET 6 Windows服务开发的基础依赖,不需要额外安装其他依赖包,调整代码写法即可解决编译错误。
修正方案
使用带HostBuilderContext参数的ConfigureServices重载,从上下文实例中获取已默认加载的配置对象即可,修改后代码如下:
IHost host = Host.CreateDefaultBuilder(args) .UseWindowsService(options => { options.ServiceName = "My Service"; }) .ConfigureServices((context, services) => { var settings = new ScriptOptions(); // ScriptOptions为自定义POCO类 // 从HostBuilderContext中读取配置并绑定 context.Configuration.Bind(settings); // 若需要后续通过IOptions<ScriptOptions>注入使用,可改为注册配置: // services.Configure<ScriptOptions>(context.Configuration); services.AddHostedService<WindowsBackgroundService>(); }) .Build();
补充说明
Host.CreateDefaultBuilder 方法默认已经自动加载了以下配置源,无需手动额外配置:
- 项目根目录下的
appsettings.json - 项目根目录下的
appsettings.{环境名称}.json - 系统环境变量
- 命令行启动参数
内容的提问来源于stack exchange,提问作者Luke Vo
相关产品推荐
相关产品推荐

