首页 > 代码库 > Topshelf 支持Mono 扩展Topshelf.Linux
Topshelf 支持Mono 扩展Topshelf.Linux
使用Topshelf 5步创建Windows 服务 这篇文章大家可以了解到使用Topshelf可以很好的支持Windows服务的开发,但是它和Mono不兼容,Github上有一个扩展https://github.com/pruiz/Topshelf.Linux 可以很好兼容Linux/Mono,本文介绍使用方法:
1、在项目中添加Topshelf.Linux, 通过Nuget 很方便的添加引用:
2、在代码中加入下面一行代码UseLinuxIfAvailable() :
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来完成这些工作。<style type="text/css">.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }</style>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。