使用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來完成這些工作。
本欄目