En son .Net Core 3.1 tabanlı bir Konsol Uygulamasını Çalışan Hizmet olarak Windows Hizmetine dönüştürmenin daha yeni bir yolu .
Visual Studio 2019'dan bir Çalışan Hizmeti oluşturursanız, bir Windows Hizmeti oluşturmak için ihtiyacınız olan hemen hemen her şeyi sağlar, bu da konsol hizmetini bir Windows Hizmetine dönüştürmek için değiştirmeniz gereken şeydir.
Yapmanız gereken değişiklikler şunlardır:
Aşağıdaki NuGet paketlerini kurun
Install-Package Microsoft.Extensions.Hosting.WindowsServices -Version 3.1.0
Install-Package Microsoft.Extensions.Configuration.Abstractions -Version 3.1.0
Program.cs dosyasını aşağıdaki gibi bir uygulamaya sahip olacak şekilde değiştirin:
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>();
});
}
}
ve servis işlemleri tarafından çalıştırılacak kodu koyacağınız Worker.cs dosyasını ekleyin:
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);
}
}
}
Her şey hazır olduğunda ve uygulama başarıyla oluşturulduğunda, aşağıdaki komutla konsol uygulama exe'nizi bir Windows Hizmeti olarak yüklemek için sc.exe'yi kullanabilirsiniz :
sc.exe create DemoService binpath= "path/to/your/file.exe"