Здесь есть несколько полезных опций.
Сначала я бы порекомендовал написать подпрограмму 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 () в ваш код. Затем вы можете запустить службу как обычно, и когда она достигнет этой точки, она предложит пользователю подключить отладчик.