Я имел большой успех с TopShelf .
TopShelf - это пакет Nuget, разработанный для упрощения создания приложений .NET Windows, которые могут работать как консольные приложения или как службы Windows. Вы можете быстро подключить события, такие как события запуска и остановки вашего сервиса, настроить с помощью кода, например, чтобы настроить учетную запись, с которой он работает, настроить зависимости от других служб и настроить способ восстановления после ошибок.
Из консоли диспетчера пакетов (Nuget):
Install-Package Topshelf
Обратитесь к образцам кода , чтобы начать.
Пример:
HostFactory.Run(x =>
{
x.Service<TownCrier>(s =>
{
s.ConstructUsing(name=> new TownCrier());
s.WhenStarted(tc => tc.Start());
s.WhenStopped(tc => tc.Stop());
});
x.RunAsLocalSystem();
x.SetDescription("Sample Topshelf Host");
x.SetDisplayName("Stuff");
x.SetServiceName("stuff");
});
TopShelf также заботится об установке службы, которая может сэкономить много времени и удаляет стандартный код из вашего решения. Чтобы установить .exe в качестве службы, просто выполните следующее из командной строки:
myservice.exe install -servicename "MyService" -displayname "My Service" -description "This is my service."
Вам не нужно подключать ServiceInstaller и все такое - TopShelf сделает все за вас.