TopShelf

開發Windows Service的時後,為了開發方便,之前都用一些小技巧切換在本機的Console模式和伺服器的Service模式,但在日後維護的時後或是偵錯的時後,總是不太方便,最近用了一個好用的套件叫TopShelf,是一個用來開發Windows Service的框架,實在太好用了,所以記錄一下筆記

首先新增一個Console專案


透過NuGet安裝TopShelf套件


簡單地寫一個類別,包含Start和Stop兩個函式

using System;

namespace ConsoleApplication1
{
class MyService
{
public void Start()
{
Console.WriteLine(“MyService Start”);
}

    public void Stop()
    {
        Console.WriteLine("My Service Stop");
    }
}

}


回到應用程式進入點開始配置服務

using Topshelf;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Topshelf.HostFactory.Run(x=>
{
x.Service<MyService>(s =>
{
s.ConstructUsing(() => new MyService());
s.WhenStarted(svc => svc.Start());
s.WhenStopped(svc => svc.Stop());
});

            x.RunAsLocalSystem();
            x.StartAutomatically();
            x.SetServiceName("MyService");
            x.SetDisplayName("MyService Display Name");
            x.SetDescription("MyService Description");
        });
    }
}

}


本機執行的結果


安裝服務只要在執行檔後面加上install參數就行了


服務就安裝好了


解除安裝只要在執行檔後面加上uninstall參數就行了


更詳細的功能可以參考官網的文件
TopShlep官網