前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Topshelf 支持Mono 扩展Topshelf.Linux

Topshelf 支持Mono 扩展Topshelf.Linux

作者头像
张善友
发布2018-01-29 14:10:28
1.9K0
发布2018-01-29 14:10:28
举报
文章被收录于专栏:张善友的专栏张善友的专栏

使用Topshelf 5步创建Windows 服务 这篇文章大家可以了解到使用Topshelf可以很好的支持Windows服务的开发,但是它和Mono不兼容,Github上有一个扩展https://github.com/pruiz/Topshelf.Linux 可以很好兼容Linux/Mono,本文介绍使用方法:

1、在项目中添加Topshelf.Linux, 通过Nuget 很方便的添加引用:

image
image

2、在代码中加入下面一行代码UseLinuxIfAvailable() :

代码语言:javascript
复制
  class Program
    {
        static ILog _log = LogManager.GetLogger(typeof(Program));

        static void Main(string[] args)
        {
            System.IO.Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
            XmlConfigurator.ConfigureAndWatch(
                new FileInfo("log4net.config"));

            var host = HostFactory.New(x =>
            {
                x.Service<SampleService>(s =>
                {
                    s.ConstructUsing(() => new SampleService());
                    s.WhenStarted(v => v.Start());
                    s.WhenStopped(v => v.Stop());

                });
                x.UseLinuxIfAvailable(); 
                x.RunAsLocalSystem();
                x.UseLog4Net();
                x.SetDescription("SampleService Description");
                x.SetDisplayName("SampleService");
                x.SetServiceName("SampleService");
            });
            host.Run();
        }

这样你的基于Topshelf Windows服务就完成了兼容Mono的改造工作。但是要注意的是在Mono下支持命令行运行,不能使用Topshelf的命令行Start,Stop控制服务等,这对于Linux环境来说足够了,可以通过rc-scripts来完成这些工作。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014-05-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档