Есть несколько полезных вариантов здесь.
Сначала я бы рекомендовал написать процедуру Main() для всех ваших служб Windows, чтобы поддерживать их запуск как службы Windows или консольного приложения. Таким образом, вы можете легко запускать консоль для отладки. Упрощенный Main() рутина может выглядеть следующим образом:
private static void Main(string[] args)
{
_service = new Service();
if (args.Length == 0 && !Debugger.IsAttached)
{
Run(new ServiceBase[] {_service});
}
else
{
Console.WriteLine("Starting Service...");
_service.OnStart(new string[0]);
Console.WriteLine("Service is running... Hit ENTER to break.");
Console.ReadLine();
_service.OnStop();
}
}
Вы можете получить новые идеи и поддерживаете различные аргументы для таких вещей, как помощь, консоль, обслуживание, установка, удаление.
Другой вариант - добавить в свой код инструкцию Debugger.Break(). Затем вы можете запустить службу как обычно, и когда она ударит по этой точке, она предложит пользователю подключить отладчик.
+1 просто хотел сказать это. –