Hier finden Sie eine neuere Methode zum Verwandeln einer Konsolenanwendung in einen Windows-Dienst als Worker-Dienst basierend auf dem neuesten .NET Core 3.1 .
Wenn Sie einen Worker-Dienst aus Visual Studio 2019 erstellen, erhalten Sie fast alles, was Sie zum sofortigen Erstellen eines Windows-Dienstes benötigen. Dies müssen Sie auch in die Konsolenanwendung ändern, um ihn in einen Windows-Dienst zu konvertieren.
Hier sind die Änderungen, die Sie vornehmen müssen:
Installieren Sie die folgenden NuGet-Pakete
Install-Package Microsoft.Extensions.Hosting.WindowsServices -Version 3.1.0
Install-Package Microsoft.Extensions.Configuration.Abstractions -Version 3.1.0
Ändern Sie Program.cs in eine Implementierung wie die folgende:
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>();
});
}
}
und fügen Sie Worker.cs hinzu, in das Sie den Code einfügen, der von den Servicevorgängen ausgeführt wird:
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);
}
}
}
Wenn alles fertig ist und die Anwendung erfolgreich erstellt wurde, können Sie mit sc.exe Ihre Konsolenanwendung exe als Windows-Dienst mit dem folgenden Befehl installieren:
sc.exe create DemoService binpath= "path/to/your/file.exe"