Tengo un problema extraño aquí. Creé un proyecto Worker para crear un servicio de Windows en .NET 6 siguiendo esta documentación . Quiero leer la configuración de appsettings.json , así que agregué el siguiente código:
IHost host = Host.CreateDefaultBuilder(args) .UseWindowsService(options => { options.ServiceName = "My Service"; }) .ConfigureServices(services => { var settings = new ScriptOptions(); // ScriptOptions is just a POCO class services.Configuration.Bind(settings); services.AddHostedService<WindowsBackgroundService>(); }) .Build(); Como puede ver, IntelliSense parece reconocer que existe una propiedad de Configuration en los services (instancia de IServiceCollection ).
Sin embargo, el código no se compilaría con este error:
'IServiceCollection' no contiene una definición para 'Configuración' y no se pudo encontrar ningún método de extensión accesible 'Configuración' que acepte un primer argumento de tipo 'IServiceCollection' (¿falta una directiva de uso o una referencia de ensamblado?)
¿Qué paquete me falta? Mi proyecto actualmente tiene:
<PackageReference Include="Microsoft.Extensions.Hosting" Version="6.0.0" /> <PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="6.0.0" />Parece que de alguna manera IntelliSense se confundió con la otra sobrecarga. De hecho, IServiceCollection NO tiene una propiedad de Configuration , pero HostBuilderContext sí.
ConfigureServices tiene otra sobrecarga que expone ambos parámetros. Esto soluciona el problema:
// Add ctx parameter .ConfigureServices((ctx, services) => { var settings = new ScriptOptions(); ctx.Configuration.Bind(settings); services.AddHostedService<WindowsBackgroundService>(); })Parece ser un error de IntelliSense, lo informé aquí .