c# Topshelf创建linux与Windows服务

article/2025/10/21 12:24:52

目录

  • Topshelf
  • 安装Topshelf包
  • 代码如下,简单粗暴
  • 卸载服务
  • 安装服务

Topshelf

讨厌创建.net 服务时的窗体怎么办?讨厌调试.net服务怎么办?调试.net服务还要自己建控制台怎么办?
Topshelf 它来了!!!
Topshelf 是一个开源的跨平台的宿主服务框架,支持Windows和Mono,只需要几行代码就可以构建一个很方便使用的服务宿主。
使用Topshelf可以非常方便的将一个C#控制台程序部署成为一个Windows Service,使用它可以很方便的构建跨平台服务寄主,而在调试时直接以控制台的形式运行即可,非常方便。
TopShelf 安装不需要依赖 .net framework 框架中的 InstallUtil.exe 工具

安装Topshelf包

在这里插入图片描述

代码如下,简单粗暴

记得自己创建log文件夹

namespace TopShelfService
{public class Program{public static void Main(string[] args){HostFactory.Run(x =>{if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX) || RuntimeInformation.IsOSPlatform(OSPlatform.Linux)){x.UseEnvironmentBuilder(target => new DotNetCoreEnvironmentBuilder(target));}else{x.UseEnvironmentBuilder(target => new WindowsHostEnvironmentBuilder(target));}x.UseAssemblyInfoForServiceInfo();x.Service<WriteTxtClass>(w =>{w.ConstructUsing(name => new WriteTxtClass());  //使用 WriteTxtClass实体w.WhenStarted(tc => tc.WriteTxtStart());   //开始服务触发 WriteTxtStart 函数w.WhenStopped(tc => tc.WriteTxtStop());    //结束服务触发 WriteTxtStop 函数});x.SetServiceName("TopShelfService1"); //服务名x.SetDisplayName("TopShelfService1");//服务显示名称x.SetInstanceName("TopShelfService1"); //服务显示名称后面的描叙x.SetDescription("TopShelfService1 is Test Services"); // 服务描叙x.RunAsLocalSystem();x.StartAutomatically();});//Console.WriteLine("Hello World!");}public class WriteTxtClass{public void WriteTxtStart(){try{string filePath = AppDomain.CurrentDomain.BaseDirectory + "log\\test.txt";if (!File.Exists(filePath)){FileStream stream = new FileStream(filePath, FileMode.Create);StreamWriter writer = new StreamWriter(stream, Encoding.Default);writer.WriteLine(DateTime.Now.ToString() + ":Start Service");//写入一行,写完后会自动换行writer.Close();//释放内存stream.Close();//释放内存}else{FileStream stream = new FileStream(filePath, FileMode.Append);//再原有文件中追加记录,不覆盖StreamWriter writer = new StreamWriter(stream, Encoding.Default);writer.WriteLine(DateTime.Now.ToString() + ":Start Service");//写入一行,写完后会自动换行writer.Close();//释放内存stream.Close();//释放内存}}catch (Exception ex){throw;}}public void WriteTxtStop(){try{string filePath = AppDomain.CurrentDomain.BaseDirectory + "log\\test.txt";if (!File.Exists(filePath)){FileStream stream = new FileStream(filePath, FileMode.Create);StreamWriter writer = new StreamWriter(stream, Encoding.Default);writer.WriteLine(DateTime.Now.ToString() + ":Stop Service");//写入一行,写完后会自动换行writer.Close();//释放内存stream.Close();//释放内存}else{FileStream stream = new FileStream(filePath, FileMode.Append);//再原有文件中追加记录,不覆盖StreamWriter writer = new StreamWriter(stream, Encoding.Default);writer.WriteLine(DateTime.Now.ToString() + ":Stop Service");//写入一行,写完后会自动换行writer.Close();//释放内存stream.Close();//释放内存}}catch (Exception ex){throw;}}}}
}

卸载服务

用管理员启动控制台,在项目目录下运行以下代码

TopShelfService.exe uninstall
在这里插入图片描述

安装服务

用管理员启动控制台,在项目目录下运行以下代码
TopShelfService.exe install
在这里插入图片描述


http://chatgpt.dhexx.cn/article/qkELu5RP.shtml

相关文章

htop与top命令

安装htop yum -y install htop htop 类似于 top 命令&#xff0c;但可以让你在垂直和水平方向上滚动&#xff0c;所以你可以看到系统上运行的所有进程&#xff0c;以及他们完整的命令行。可以不用输入进程的 PID 就可以对此进程进行相关的操作 (killing, renicing)。 与 Lin…

使用Quartz.net实现多线程任务定时执行,动态配置Job,结合Topshelf构建Windows服务

几个月前有这么个需求&#xff1a;需要执行一些Job&#xff0c;这些Job会各自按照不同的时间频次执行&#xff0c;且它们做的事情也不同&#xff0c;有的是监控站点&#xff0c;有的是监控服务器存储情况&#xff0c;有的是监控报表PROCEDURE的执行状况… OK&#xff0c;当看到…

top命令参数详解

简介 top命令是Linux下常用的性能分析工具&#xff0c;能够实时显示系统中各个进程的资源占用状况&#xff0c;类似于Windows的任务管理器。 top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直…

top命令参数详解(linux top命令的用法详细详解)

通过top命令可以有效的发现系统的缺陷出在哪里。是内存不够、CPU处理能力不够、IO读写过高。 top命令输出长这样&#xff1a; top命令参数详解&#xff08;linux top命令的用法详细详解&#xff09; 以下解析一下各个字段的意思&#xff1a; VIRT&#xff1a;virtual memory …

Topas命令详解

执行topas命令后如图所示&#xff1a; #topas 操作系统的最全面动态&#xff0c;而又查看方便的性能视图就是topas命令了&#xff0c;下面以topas输出为例&#xff0c;对AIX系统的性能监控做简要描述&#xff0c;供运维工程师和系统管理员们参考。 另&#xff1a;1.操作系统报…

Topshelf 打包部署Windows服务

1 创建项目(例&#xff1a;控制台程序) Nuget 引入Topshelf类库 using System; using System.Threading; using System.Threading.Tasks; using Topshelf;namespace LoginTypeInherit {public class Program{private static readonly log4net.ILog log log4net.LogManager.G…

Linux top命令参数详解

Linux top命令参数详解 生产环境系统运行慢&#xff0c;出现无法响应通常原因主要还在于分析CPU、内存、磁盘使用率情况&#xff0c;并结合命令查找出具体进程&#xff0c;并在进程中进一步分析主要因子情况&#xff0c;渗透到对于其中包含线程占用情况的分析。一般而言对于ja…

C#之TopShelf启动Windows服务

写了一两天&#xff0c;才发现组长给的原始代码原本就有Topshelf&#xff0c;还是写出来提示我topshelf不明确哪个版本的使用&#xff0c;莫名尴尬。 1、项目的主要运行代码 HostFactory.Run(x >{x.RunAsLocalSystem();x.SetDescription("topshelf测试");x.SetDi…

Linux下top命令用法详解

一、命令介绍 Linux top命令用于实时显示 process &#xff08;进程&#xff09;的动态。它用于监控正在运行系统负荷的信息&#xff0c;包括系统负载、CPU利用分布情况、内存使用、每个进程的资源占用情况等。 使用权限&#xff1a;所有使用者 二、命令详解 在命令行下输入…

【Linux】Top命令参数解释

TOP命令 这是一个Linux系统下 top 命令所输出的进程监控信息。以下是各列含义&#xff1a; top - 09:52:15&#xff1a;当前时间。 up 27 min&#xff1a;系统已经运行的时长。 2 users&#xff1a;当前有2个用户登录到系统上。 load average: 0.97, 0.41, 0.21&#xff1a;系…

Topshelf的使用

一、简介 Topshelf可用于创建和管理Windows服务。其优势在于不需要创建windows服务&#xff0c;创建控制台程序就可以。便于调试。 二、官方地址&#xff1a; 1、官网&#xff1a;http://topshelf-project.com/ 2、官方文档&#xff1a;https://topshelf.readthedocs.io/en/lat…

topshelf

topshelf和quartz topshelf和quartz内部分享 阅读目录: 介绍基础用法调试及安装可选配置多实例支持及相关资料quartz.net 上月在公司内部的一次分享&#xff0c;现把PPT及部分交流内容整理成博客。 介绍 topshelf是创建windows服务的一种方式&#xff0c;相比原生实现ServiceBa…

使用Quartz.net + Topshelf完成服务调用

概述&#xff1a; Quartz.NET 是一个开源作业调度库&#xff0c;可用于在 .NET 应用程序中调度和管理作业。它提供了一个灵活而强大的框架&#xff0c;用于调度作业在特定的日期和时间或以固定的时间间隔运行&#xff0c;并且还支持复杂的调度场景&#xff0c;例如 cron 表达式…

Linux中top命令参数详解

top命令用法 top命令经常用来监控linux的系统状况&#xff0c;是常用的性能分析工具&#xff0c;能够实时显示系统中各个进程的资源占用情况。 top的使用方式 top [-d number] | top [-bnp] 参数解释&#xff1a; -d&#xff1a;number代表秒数&#xff0c;表示top命令显示…

linux 命令:top 详解

注&#xff1a;以下文档根据2019年10月的官方文档翻译。 名称&#xff1a;top - 展示linux进程信息 用法&#xff1a;top -hv|-bcEHiOSs1 -d secs -n max -u|U user -p pid -o fld -w [cols] 在top进程运行过程中&#xff0c;两个最重要的功能是查看帮助&#xff08;h 或 &…

Topshelf 搭建 Windows 服务

C# Topshelf 搭建 Windows 服务 Topshelf 是一个用来部署基于.NET Framework 开发的服务的框架。简化服务创建于部署过程&#xff0c;并且支持控制台应用程序部署为服务。本文基于 .net core 控制台应用程序部署为服务&#xff08;.net Framework 可用&#xff09;。 第一步&…

TOP命令详解

TOP命令详解 top命令经常用来监控linux的系统状况&#xff0c;是常用的性能分析工具&#xff0c;能够实时显示系统中各个进程的资源占用情况。 top的使用方式 top [-d number] | top [-bnp]参数解释&#xff1a; -d&#xff1a;number代表秒数&#xff0c;表示top命令显示的页…

【转】Topshelf入门

windows服务用处多多啊&#xff0c;wcf宿主服务、webapi宿主服务、定时任务等都会用到&#xff0c;最近写的一套呼叫中心&#xff0c;也最终要做成windows服务&#xff0c;以前都是用vs里面自带的windows服务来写&#xff0c;但感觉总是不够方便&#xff0c;最近了解到了topshe…

使用Topshelf创建Windows服务

概述 Topshelf是创建Windows服务的另一种方法&#xff0c;老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的介绍使用使用Topshelf创建Windows 服务。Topshelf是一个开源的跨平台的宿主服务框架&#xff0c;支持Windows和Mono&#xff0…

QT编程入门之QT designer

1.qt 编程的工作流程简介 使用QT作为GUI开发工具的项目流程&#xff0c;可用下图表示&#xff1a; QT项目开发流程 开发流程的解析&#xff1a;假设用QDesigner设计了一个X.UI窗口&#xff0c;之后就需要使用uic来进行编译&#xff0c;生成对应的.h文件.另外一个自定义的类型…