Topshelf 是一个用来部署基于.NET Framework 开发的服务的框架。简化服务创建于部署过程,并且支持控制台应用程序部署为服务。本文基于 .net core 控制台应用程序部署为服务(.net Framework 可用)。

第一步:创建名为 TopshelfDemo 的控制台应用程序。

第二步:通过 Nuget 安装 Topshelf 包。

第三步:Toshelf 配置,代码并不多下面都有注释。

using System;
using Topshelf; namespace TopshelfDemo
{
class Program
{
static void Main(string[] args)
{
try
{
// 配置和运行宿主服务
HostFactory.Run(x => //
{
x.Service<Service>(s => //
{
// 指定服务类型。这里设置为 Service
s.ConstructUsing(name => new Service()); //3 // 当服务启动后执行什么
s.WhenStarted(tc => tc.Start()); //4 // 当服务停止后执行什么
s.WhenStopped(tc => tc.Stop()); //
}); // 服务用本地系统账号来运行
x.RunAsLocalSystem(); //6 // 服务描述信息
x.SetDescription("我的项目服务"); //7
// 服务显示名称
x.SetDisplayName("MyProjectServiceShowName"); //8
// 服务名称
x.SetServiceName("MyProjectService"); //9
});
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
} public class Service
{
public void Start() {
//To do something
}
public void Stop() {
//To do something
}
}
}

第四步:安装服务

  确保项目正常生成,然后通过管理员权限打开 cmd 命令窗口,找到项目所在的 Debug 目录,输入命令:TopshelfDemo.exe install。

  如果是使用 .net core 的小伙伴你会发现 Debug下压根没有 TopshelfDemo.exe ,这不是扯淡呢么,别急往下看。

  由于 .net core 依赖 runtimes 所以我们需要发布以下程序,并且选择独立项目就ok啦。

这时你在布后的路径下就可以找到 TopshelfDemo.exe 啦。

这时服务就安装完毕了,我们可以通过 Windows 服务中查看。

删除服务命令:TopshelfDemo.exe uninstall

也可以通过 sc delete MyProjectService 进行删除

好了,到这里就完事儿了,哪里有问题希望大家猛烈拍砖以便修正~

  链接: https://pan.baidu.com/s/1bHIQgO6GFahXOtgI3dlNTA

  提取码: thki

Topshelf 搭建 Windows 服务的更多相关文章

  1. 使用Topshelf创建Windows服务

    概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的 ...

  2. Topshelf创建Windows服务

    使用Topshelf创建Windows服务 概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps ...

  3. 【第三方插件】使用Topshelf创建Windows服务

    概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的 ...

  4. Quartz+TopShelf实现Windows服务作业调度

    Quartz:首先我贴出来了两段代码(下方),可以看出,首先会根据配置文件(quartz.config),包装出一个Quartz.Core.QuartzScheduler instance,这是一个调 ...

  5. C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库

    C# DateTime的11种构造函数   别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Glob ...

  6. C#/.NET基于Topshelf创建Windows服务的守护程序作为服务启动的客户端桌面程序不显示UI界面的问题分析和解决方案

    本文首发于:码友网--一个专注.NET/.NET Core开发的编程爱好者社区. 文章目录 C#/.NET基于Topshelf创建Windows服务的系列文章目录: C#/.NET基于Topshelf ...

  7. 使用Topshelf创建Windows服务[转载]

    概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的 ...

  8. 使用Topshelf 开发windows服务

    在业务系统中,我们为了调度一些自动执行的任务或从队列中消费一些消息,所以基本上都会涉及到后台服务的开发.如果用windows service开发,非常不爽的一件事就是:调试相对麻烦,而且你还需要了解 ...

  9. [Solution] Microsoft Windows 服务(2) 使用Topshelf创建Windows服务

    除了通过.net提供的windows服务模板外,Topshelf是创建Windows服务的另一种方法. 官网教程:http://docs.topshelf-project.com/en/latest/ ...

随机推荐

  1. java DES转C#DES加密解密

    一个程序用到java的cn.core.jar加密的,需要在.NET 中解密,发现JAVA的des算法与C#的有点区别. 自己不太懂加密解密算法,所以找了个省事的方法,用IKVM.NET,用这个将cn. ...

  2. Java之路---Day17(数据结构)

    2019-11-04-23:03:13 目录: 1.常用的数据结构 2.栈 3.队列 4.数组 5.链表 6.红黑树 常用的数据结构: 包含:栈.队列.数组.链表和红黑树 栈: 栈:stack,又称堆 ...

  3. v-bind 属性绑定

    1.v-bind:title="title" 绑定谁和谁绑定. 2.v-bind:title="title" 简写::title="title&quo ...

  4. FCC-学习笔记 Pig Latin

    FCC-学习笔记  Pig Latin 1>最近在学习和练习FCC的题目.这个真的比较的好,推荐给大家. 2>中文版的地址:https://www.freecodecamp.cn/;英文版 ...

  5. PHP实现sha1加密AES算法加密解密数据

    一.加密代码如下: /** * * @param string $string 需要加密的字符串 * @param string $key 密钥 * @return string */ public ...

  6. QT场景视图父子关系图元打印研究

    在之前的一篇文章中,实现了QT场景视图的打印功能,主要通过render函数来实现,非常简单和方便. 在实际的项目需求中,除了打印整个场景外,还需要对单个图形进行打印操作,基于item的图形可以在pai ...

  7. vue中的---MVVM(面试必问)

    M---Model  (数据) V---View (视图) VM---VIewModel  (转换器) VIewModel主要做两件事: 1.把 Model 中的数据绑定到View(视图层). 2.监 ...

  8. rhel7学习第四天

    学习<Linux就该这么学>第二周,学习了最重要的几个文件操作命令

  9. Nginx 核心配置-location的匹配案例实战篇

    Nginx 核心配置-location的匹配案例实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.location语法规则介绍 在没有使用正则表达式的时候,nginx会先在 ...

  10. 采坑复盘:logging日志能用封装后的函数来打日志,发现filename一直显示封装logging函数的方法所在的文件名

    问题: logging日志能用封装后的函数来打日志,发现filename一直显示封装logging函数的方法所在的文件名 原因: logging记录的是第一个函数执行所在的文件,那用封装的函数,首先执 ...