Créer une application console .NET 6 en tant que service Windows
Introduction
Cet article vous guidera à travers les étapes de la création d'une application console .NET 6 qui s'exécute en tant que service Windows. Cette approche est utile lorsque vous avez besoin qu'une application s'exécute en arrière-plan, indépendamment de toute session utilisateur, et qu'elle puisse démarrer automatiquement au démarrage de l'ordinateur.
Configuration de l'application console .NET 6
- Créer un nouveau projet: Ouvrez Visual Studio et créez un nouveau projet. Sélectionnez Application console (.NET 6) et donnez-lui un nom.
- Écrire le code de l'application: Ajoutez le code de l'application console dans le fichier
Program.cs
. Par exemple, vous pouvez inclure une boucle infinie qui s'exécute à intervalles réguliers et effectue une tâche spécifique.
using System;
using System.Threading;
namespace MyConsoleService
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Service Windows démarré.");
while (true)
{
// Code à exécuter à intervalles réguliers
Console.WriteLine("Exécution de la tâche...");
Thread.Sleep(5000); // Pause de 5 secondes
}
}
}
}
Créer le service Windows
- Installer le package NuGet: Dans le gestionnaire de packages NuGet, installez le package
Microsoft.Extensions.Hosting.WindowsServices
:
Install-Package Microsoft.Extensions.Hosting.WindowsServices
- Modifier le code: Modifiez le code de l'application pour qu'elle utilise l'interface
IHost
et le typeWindowsServiceLifetime
.
using Microsoft.Extensions.Hosting;
using System;
using System.Threading;
namespace MyConsoleService
{
class Program
{
static void Main(string[] args)
{
// Créer l'hôte de l'application
IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
// Ajouter le service Windows
services.AddHostedService();
})
.UseWindowsService() // Indique que l'application est un service Windows
.Build();
// Exécuter l'application
host.Run();
}
}
public class MyWindowsService : IHostedService
{
public Task StartAsync(CancellationToken cancellationToken)
{
Console.WriteLine("Service Windows démarré.");
// Code à exécuter lors du démarrage du service
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken)
{
Console.WriteLine("Service Windows arrêté.");
// Code à exécuter lors de l'arrêt du service
return Task.CompletedTask;
}
}
}
- Compiler l'application: Compilez l'application en utilisant la commande
dotnet publish
ou en utilisant Visual Studio.
Installer le service Windows
- Ouvrir l'invite de commandes: Ouvrez une invite de commandes avec des privilèges d'administrateur.
- Installer le service: Naviguez vers le répertoire de publication de l'application et exécutez la commande suivante:
sc create MyConsoleService binPath= "chemin_vers_l'exécutable.exe"
Remplacez MyConsoleService
par le nom de votre service et chemin_vers_l'exécutable.exe
par le chemin complet vers l'exécutable de votre application.
Démarrer et gérer le service Windows
- Démarrer le service: Exécutez la commande suivante pour démarrer le service:
sc start MyConsoleService
- Arrêter le service: Exécutez la commande suivante pour arrêter le service:
sc stop MyConsoleService
- Gérer le service: Utilisez l'outil
services.msc
pour gérer le service, y compris le démarrage automatique, les dépendances et d'autres options.
Conclusion
En suivant ces étapes, vous pouvez facilement créer une application console .NET 6 qui s'exécute en tant que service Windows. Cette approche vous permet de créer des applications qui s'exécutent en arrière-plan et qui peuvent être gérées facilement via les outils de gestion des services Windows.
Mots-clés: .NET 6, application console, service Windows, IHostedService, Microsoft.Extensions.Hosting.WindowsServices