本文转载自微信公众号《UP科技控》,作者conan5566。转载本文请联系UP技控公众号。Topshelf是一个开源的跨平台托管服务框架,支持Windows和Mono。只需要几行代码就可以搭建一个非常方便的服务宿主。使用Topshelf将C#控制台程序部署为Windows服务非常方便。搭建一个跨平台的服务宿主非常方便,调试的时候直接作为控制台运行也很方便。TopShelf安装无需依赖.net框架中的InstallUtil.exe工具。staticvoidMain(string[]args){HostFactory.Run(x=>{x.UseAssemblyInfoForServiceInfo();x.Service(w=>{w.ConstructUsing(name=>newWriteTxtClass()));//使用WriteTxtClassentityw.WhenStarted(tc=>tc.WriteTxtStart());//启动服务触发WriteTxtStart函数w.WhenStopped(tc=>tc.WriteTxtStop());//结束服务触发WriteTxtStop函数});x.SetServiceName("TopShelfService1");//服务名称x.SetDisplayName("TopShelfService1");//服务显示名称x.SetInstanceName("TopShelfService1");//服务显示名称后面的说明x.SetDescription("TopShelfService1isTestServices");//服务说明x.RunAsLocalSystem();x.StartAutomatically();});}publicclassWriteTxtClass{publicvoidWriteTxtStart(){stringfilePath=AppDomain.CurrentDomain.BaseDirectory+"log\\test.txt";if(!File.Exists(filePath)){FileStreamstream=newFileStream(filePath,FileMode.Create);StreamWriterwriter=newStreamWriter(stream,Encoding.Default);writer.WriteLine(DateTime.Now.ToString()+":StartService");//写一行,write写完后会自动换行iter.Close();//释放内存stream.Close();//释放内存}else{FileStreamstream=newFileStream(filePath,FileMode.Append);//在原文件中添加记录,不覆盖StreamWriterwriter=newStreamWriter(stream,Encoding.Default);writer.WriteLine(DateTime.Now.ToString()+":StartService");//写一行,写完自动换行writer.Close();//释放内存流.Close();//释放内存}}publicvoidWriteTxtStop(){stringfilePath=AppDomain.CurrentDomain.BaseDirectory+"log\\test.txt";if(!File.Exists(filePath)){FileStreamstream=newFileStream(filePath,FileMode.Create);StreamWriterwriter=newStreamWriter(stream,Encoding.Default);writer.WriteLine(DateTime.Now.ToString()+":StopService");//写一行,写完自动换行writer.Close();//释放内存stream.Close();//释放内存}else{FileStreamstream=newFileStream(filePath,FileMode.Append);//在不覆盖的情况下向原文件添加记录StreamWriterwriter=newStreamWriter(stream,Encoding.Default);writer.WriteLine(DateTime.Now.ToString()+":StopService");//写一行,写完自动换行writer.Close();//释放内存流.Close();//释放内存}}}安装卸载windows服务TopShelfService.exeinstall#安装Windows服务TopShelfService.exeuninstall#卸载Windows服务