.net core开发Windows服务

我们知道.net core支持console和web开发,分别叫做.net core程序和asp.net core. 

查询.net core官方文档,并没有介绍编写windows service相关的说明,一直以来以为dotnet core不支持windows service开发,知道查看asp.net core部署文档中提到可以部署在Windows service中,从而确定dotnet是可以开发Windows service的.

查看asp.net core的Windows宿主的源代码Microsoft.AspNetCore.Hosting.WindowsServices,发现最终给宿主是继承自System.ServiceProcess.ServiceBase,同时实现了OnStart以及OnStop等一些列方法.我们知道dotnet framework 中的service基类也是System.ServiceProcess.ServiceBase,所以可以试下按照传统的dotnet framework的方法尝试开发Windowsservice.

 

我们新建一个dotnet console程序,添加一个windows服务,取名WinService

 

默认代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.Text;
 
namespace WindowsService.Demo
{
    partial class WinService: ServiceBase
    {
        public WinService()
        {
            InitializeComponent();
        }
 
        protected override void OnStart(string[] args)
        {
            // TODO: 在此处添加代码以启动服务。
        }
 
        protected override void OnStop()
        {
            // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
        }
    }
}
我们发现默认是会报dll缺失的错误,我们添加nuget引用System.ServiceProcess.ServiceController.

 


修改main方法,运行WinService即可.dotnet没有提供界面画的安装程序,可以通过sc命令安装服务.

sc create myservicename binpath="***.exe"

using System;
using System.ServiceProcess;
 
namespace WindowsService.Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            ServiceBase[] services = new ServiceBase[] { new WinService() };
            ServiceBase.Run(services);
        }
    }
}
发布时选择独立部署类型,即可生产可独立运行大的exe程序

 


 ———————————————— 
版权声明:本文为CSDN博主「淮阴侯」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013710468/article/details/81318244

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值