Aquí hay una forma más nueva de cómo convertir una aplicación de consola en un servicio de Windows como un servicio de trabajo basado en el último .Net Core 3.1 .
Si crea un Servicio de trabajo de Visual Studio 2019, le dará casi todo lo que necesita para crear un Servicio de Windows de forma inmediata, que también es lo que necesita cambiar a la aplicación de consola para convertirlo en un Servicio de Windows.
Estos son los cambios que debes hacer:
Instale los siguientes paquetes NuGet
Install-Package Microsoft.Extensions.Hosting.WindowsServices -Version 3.1.0
Install-Package Microsoft.Extensions.Configuration.Abstractions -Version 3.1.0
Cambie Program.cs para tener una implementación como la siguiente:
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace ConsoleApp
{
class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).UseWindowsService().Build().Run();
}
private static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
});
}
}
y agregue Worker.cs donde colocará el código que ejecutarán las operaciones de servicio:
using Microsoft.Extensions.Hosting;
using System.Threading;
using System.Threading.Tasks;
namespace ConsoleApp
{
public class Worker : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
//do some operation
}
public override Task StartAsync(CancellationToken cancellationToken)
{
return base.StartAsync(cancellationToken);
}
public override Task StopAsync(CancellationToken cancellationToken)
{
return base.StopAsync(cancellationToken);
}
}
}
Cuando todo esté listo y la aplicación se haya creado correctamente, puede usar sc.exe para instalar su aplicación de consola exe como un Servicio de Windows con el siguiente comando:
sc.exe create DemoService binpath= "path/to/your/file.exe"