Обычно я разрабатываю любую программу в виде библиотеки классов (или набора библиотек) с логической точкой входа, затем добавляю оболочку проекта запуска: консольное приложение, службу Windows, веб-сайт.
Если в вашей программе есть точка входа (класс с методом, который запускает всю вашу бизнес-логику), то вы можете создать ее как библиотеку классов без каких-либо изменений и добавить консольный проект и проект службы Windows в свойрешение, которое в основном классе (например, Program.cs) создает точку входа и вызывает метод ввода.
Этот подход не вторгается в вашу бизнес-логику с использованием подхода использования и позволяет вам каждый раз создавать каждый режим использованияВы строите все решение.Другими словами, это позволяет разделить проблемы: программу и способ ее запуска.