다음은 최신 .Net Core 3.1을 기반으로 콘솔 응용 프로그램을 작업자 서비스로 Windows 서비스로 전환하는 새로운 방법입니다 .
Visual Studio 2019에서 작업자 서비스를 만들면 Windows 서비스를 즉시 생성하는 데 필요한 거의 모든 것이 제공되며,이를 Windows 서비스로 변환하려면 콘솔 응용 프로그램으로 변경해야합니다.
수행해야 할 변경 사항은 다음과 같습니다.
다음 NuGet 패키지를 설치하십시오.
Install-Package Microsoft.Extensions.Hosting.WindowsServices -Version 3.1.0
Install-Package Microsoft.Extensions.Configuration.Abstractions -Version 3.1.0
아래와 같이 구현되도록 Program.cs를 변경하십시오.
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>();
});
}
}
서비스 작업에 의해 실행될 코드를 넣을 Worker.cs를 추가하십시오.
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);
}
}
}
모든 것이 준비되고 응용 프로그램이 성공적으로 구축되면 sc.exe 를 사용 하여 다음 명령으로 콘솔 응용 프로그램 exe를 Windows 서비스로 설치할 수 있습니다 .
sc.exe create DemoService binpath= "path/to/your/file.exe"