Служба 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)