使用Topshelf部署window后台服务(C#)

使用ServiceBase的方式部署window后台服务很不方便,不方便调试开发,但使用Topshelf,安装服务简单,卸载服务简单,调试简单

测试环境:

visual studio 2022

win11

测试步骤如下:

1 新建名为DataSmartAgentService的.net framework控制台项目,.net framework选择.net framework 4.7,并新建服务类WindowService并编辑如下:

cs 复制代码
 public class WindowService
 {
     public bool StartService() 
     {
         string startTip = "service start...";
         Console.WriteLine(startTip);
         LogManager.GetInstance().WriteDebugLog(startTip);
         return true;
     }

     public bool StopService() 
     {
         string stopTip = "service stop..."; 
         Console.WriteLine(stopTip);
         LogManager.GetInstance().WriteDebugLog(stopTip);
         return true;
     }
 }

2 利用nuget安装Topshelf,版本选择4.3.0,如下图:

3 在主程序编写代码如下:

cs 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Topshelf;

namespace DataSmartAgentService
{
    internal class Program
    {
        static void Main(string[] args)
        {
            HostFactory.Run(x =>
            {
                x.Service<WindowService>(s =>
                {
                    s.ConstructUsing(name => new WindowService());
                    s.WhenStarted(tc => tc.StartService()); 
                    s.WhenStopped(tc => tc.StopService()); 
                });
                x.RunAsLocalSystem();
                x.StartAutomatically();
                x.SetServiceName("OPASDataSmartAgentService");
                x.SetDisplayName("OPASDataSmartAgentService");
                x.SetDescription("This is OPASDataSmartAgentService.");
            });
        }
    }
}

4 安装window后台服务

利用管理员打开cmd,然后切换到运行程序的目录

然后输入命令:

cs 复制代码
运行程序名称.exe  install

这里是DataSmartAgentService.exe install,如下图:

可以看到后台服务已经安装成功了,如下图:

5 有安装,肯定就有卸载,卸载也是很简单

利用管理员打开cmd,然后切换到运行程序的目录

然后输入命令:

cs 复制代码
运行程序名称.exe  uninstall

这里是DataSmartAgentService.exe uninstall

好了,本地的内容到此结束

相关推荐
EIP低代码平台18 小时前
EIP低代码平台-系统参数配置详解|落地三级等保+高灵活私有化部署方案
低代码·c#·权限·工作流·netcore
王莎莎-MinerU19 小时前
MCP 解决的是工具接入,科研 Agent 还缺的是科学证据接口标准化
开发语言·网络·人工智能·深度学习·pdf·c#·php
-银雾鸢尾-20 小时前
C#中Object类内的方法
开发语言·c#
tiankong121321 小时前
如何拓展多态下的子类
设计模式·c#
geats人山人海1 天前
c# 第九章 record
开发语言·c#
-银雾鸢尾-1 天前
C#中的抽象类与抽象方法
开发语言·c#
影寂ldy1 天前
C# Task 进阶:WaitAll / WaitAny / WhenAll / WhenAny
开发语言·c#
咏方舟【长江支流】1 天前
【编程】(1)-跨平台跨语言C#、Java、鸿蒙ArkTS三端通用实体接口
java·c#·ai编程·harmonyos·arkts·咏方舟-长江支流·用宝框架
o5278831841 天前
校园一体化管理系统2.1、基于整洁四层架构 + DDD+CQRS 项目目录解读
后端·架构·c#·asp.net·visual studio