2016-12-07 7 views
12

Есть ли способ разработать сервис Windows (который можно запустить при загрузке и т. Д.) С помощью .NET Core?Служба Windows с .NET Core

Все учебники и инструкции, которые я нахожу, используют System.ServiceProcess.ServiceBase, которые по какой-либо причине не могут быть найдены и добавлены в Visual Studio 2015?

Я также стараюсь избегать использования сторонних инструментов/библиотек, таких как SrvStart. Что-то вроде Topshelf было бы приемлемым, но, похоже, оно недоступно для ядра .NET.

И было бы здорово, если бы служба могла работать под окнами и linux.

Любые идеи, как я мог бы достичь этого?

+0

Благодарим за информацию. Хотя моя цель скорее фоновая волк, чем размещенная веб-служба. – monty

+0

Я создал библиотеку, которая должна упростить этот процесс для вас. Вы можете найти его здесь https://github.com/PeterKottas/DotNetCore.WindowsService. Надеюсь, вы найдете это полезным. –

+1

Есть две разные вещи, которые вы можете использовать. https://github.com/dasMulli/dotnet-win32-service https://github.com/aspnet/Hosting/tree/dev/src/Microsoft.AspNetCore.Hosting.WindowsServices – TerribleDev

ответ

2

Я суммировать некоторые варианты:

  1. Переместить код в библиотеку .NET Standard, а также размещать его в .NET Framework приложение, так что вы можете использовать ServiceBase. Это, конечно, потребуется .NET Framework для установки на целевой машине
  2. Использование NSSM (Не-сосание Service Manager) для управления .NET Ядро консольного приложения (он имеет лицензию общественного достояния)
  3. Использование Windows API вызывает привязку к методам службы Windows. Это подход, принятый DotNetCore.WindowsService и dotnet-win32-service (оба лицензированы MIT)