ASP.NET Core框架学习之Topshelf创建Windows服务

Topshelf是一个开源的跨平台的宿主服务框架,只需要几行代码就可以构建一个很方便使用的windows服务。

首先安装nuget包 Topshelf。

创建一个.net core控制台程序

复制代码
 1  static void Main(string[] args)
 2  {
 3             #region 容器注入
 4             var services = new ServiceCollection();14             services.AddScoped(typeof(ServiceRunner));
15             var serviceProvider = services.BuildServiceProvider(); 
16             #endregion

28             #region topshelf
29             HostFactory.Run(x =>
30             {
31                 x.Service<ServiceRunner>(s =>                      
32                 {
33                     s.ConstructUsing(name => serviceProvider.GetService<ServiceRunner>());
34                     s.WhenStarted(tc => tc.Start());
35                     s.WhenStopped(tc => tc.Stop());
36                 }
37                     );
38                 x.RunAsLocalSystem();
39                 x.EnablePauseAndContinue();
40                 x.SetDescription("QuartzWechatMsg_");        //安装服务后,服务的描述
41                 x.SetDisplayName("QuartzWechatMsg");                       //显示名称
42                 x.SetServiceName("QuartzWechatMsg");                       //服务名称
43             });
44             #endregion
45             Console.ReadLine();
46  }
复制代码

 

复制代码
 1  public class ServiceRunner 
 2 {
 3         public ServiceRunner()
 4         {
 5         }
 6 
 7         public void Start()
 8         {
 9             Log4Util.Info("消息发送服务已启动");
10             //要执行的任务逻辑
11         }
12 
13         public void Stop()
14         {
15             Log4Util.Info("消息发送服务已关闭");
16         }
17 }        
复制代码

  这样一个简单的Windows服务就开发完了,接下来只需要一些简单的配置即可。

  安装:*.exe install
  启动:*.exe start
  卸载:*.exe uninstall
 
  值得一提的是,.net core 默认情况下,是不会生成 .exe程序的,需要在项目上右键编辑xxx.csproj,添加一行
 <RuntimeIdentifier>win10-x64</RuntimeIdentifier>
<PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <RuntimeIdentifier>win10-x64</RuntimeIdentifier>
  </PropertyGroup>

重新生成解决方案,即可在根目录下发现一个 win10-x64文件夹,exe就生成在该文件夹内。

 

posted @   唐磊(Jason)  阅读(302)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示