Мы стремимся построить наш аналог Фрэнсиса Б., но используем условную компиляцию:
#if DEBUG
Application.Run(new YourForm())
#else
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new YourService()
}
ServiceBase.Run(ServicesToRun);
#endif
Таким образом, во время разработки легко тестировать и отлаживать, а затем выполнять развертывание сборки как службу.
Я не уверен по вашему вопросу, хотите ли вы, чтобы он был выпущен как отдельный exe-файл или просто как инструмент, помогающий разработке и тестированию.
Кстати, обратите внимание, что вам не нужно иметь блок application.run () в вашей отладочной версии. Если он не показывает форму, то подойдет любой код, который выполняет бесконечный цикл при создании обработчика OnStart вашего сервиса в отдельном потоке.