Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

661
Visualizações
Cómo ejecutar la aplicación .NET Core Console usando un generador de host genérico

Estoy tratando de descubrir cómo usar el patrón de hostbuilder para ejecutar una aplicación de consola (no un servicio de Windows). La intención es mantener el flujo similar a un WebApi para mantener las prácticas de desarrollo similares. He visto muestras para usar HostedService o BackGroundService, donde quieren ejecutarlo como un servicio de Windows. Pero si estoy buscando ejecutar una aplicación de consola simple, ¿dónde especifico mi clase y método de punto de entrada? Desde hostbuilder.Build(), puedo ver los métodos Run() y RunAsync(). Pero no puedo averiguar qué ejecutará.

He visto otros ejemplos de dónde puede crear una colección de servicios y luego usar serviceprovider.GetService().SomeMethod() para iniciar el proceso. Pero eso se desvía de lo que queremos hacer. Entonces, sugiera cómo especificar el proceso de inicio. Estamos usando 3.1 .Net Core.

 class Program { static async void Main(string[] args) { var host = CreateHostBuilder(args).Build(); await host.RunAsync(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((hostBuilderContext, serviceCollection) => new Startup(hostBuilderContext.Configuration).ConfigureServices(serviceCollection)) .UseSerilog() ; }
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

EDITAR: la actualización de .NET 6 está debajo ↓


Comenzaría con la plantilla de worker predeterminada. Viene con los paquetes necesarios preinstalados. Si ya tiene un proyecto, instale el paquete Microsoft.Extensions.Hosting .

 dotnet new worker -n MyCli

Luego abra Program.cs y cree el host. Elimine el servicio alojado de Worker si no quiere ir con la ruta del servicio alojado.

 public class Program { public static void Main(string[] args) { var host = CreateHostBuilder(args).Build(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { // remove the hosted service // services.AddHostedService<Worker>(); // register your services here. }); }

Construye tu lógica:

 internal class MyService { // you can also inject other services private ILogger<MyService> _logger; public MyService(ILogger<MyService> logger) { _logger = logger; } public void DoSomething() { _logger.LogInformation("Doing something"); } }

Luego registre la clase dentro del método .ConfigureServices

 Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { services.AddTransient<MyService>(); });

Ahora puede resolverlo y llamarlo dentro del método Main :

 public static void Main(string[] args) { var host = CreateHostBuilder(args).Build(); var myService = host.Services.GetRequiredService<MyService>(); myService.DoSomething(); }

Actualización de .NET 6

Con .NET 6, el modelo estándar se reduce significativamente. Podemos reescribir nuestro Program.cs como:

 var host = Host.CreateDefaultBuilder(args) .ConfigureServices(services => { services.AddTransient<MyService>(); }) .Build(); var my = host.Services.GetRequiredService<MyService>(); await my.ExecuteAsync(); class MyService { private readonly ILogger<MyService> _logger; public MyService(ILogger<MyService> logger) { _logger = logger; } public async Task ExecuteAsync(CancellationToken stoppingToken = default) { _logger.LogInformation("Doing something"); } }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda