Служба Windows с .NET Core
Есть ли способ разработать службу Windows (можно запускать при загрузке и т.д.) с .NET Core?
Все учебники и инструкции, которые я нахожу, используют System.ServiceProcess.ServiceBase, которые не могут быть найдены и добавлены по какой-либо причине в Visual Studio 2015?
Я также стараюсь избегать использования сторонних инструментов/библиотек, таких как SrvStart. Что-то вроде Topshelf было бы приемлемым, но, похоже, оно недоступно для ядра .NET.
И было бы здорово, если бы служба могла работать под окнами и linux.
Любые идеи, как я мог бы это достичь?
Ответы
Ответ 1
Я подведу некоторые варианты:
- Переместите свой код в библиотеку .NET Standard и разместите его в приложении .NET Framework, чтобы вы могли использовать
ServiceBase
. Разумеется, для установки на целевой машине .NET Framework необходимо установить
- Используйте NSSM (диспетчер несвязанных сервисов) для управления консольным приложением .NET Core (у него есть лицензия для общедоступного домена )
- Используйте вызовы Windows API, чтобы подключиться к методам службы Windows. Это подход, используемый DotNetCore.WindowsService и dotnet-win32-service (оба лицензированы MIT)