Wednesday, April 16, 2008

Отладка Windows Service в Visual Studio.

Многие проекты в качестве host-среды используют стандартные службы Windows. Но к сожлению, не все разработчики знакомы с эффективными методами отладки служб, поэтому вновь и вновь, открывая решения своих коллег, я вижу там или дублирующее консольное-host приложение или "голый" сервис, который нужно сначала инсталлировать, запустить, а потом присоединяться отладчиком к его процессу. Существует же несколько способов отладки служб и достачное количество информации в сети, описывающей эти способы. Я хочу выделить, как мне кажется, самый краткий и эффективный способ, с которым, можно нажать F5 и спокойно ждать, когда произойдет попадание в нужную точку останова(если конечно в текущей конфигурации сборки определена константа DEBUG).

using System;
using System.ServiceProcess;
using System.Threading;

namespace DebugWindowsService
{
partial class TestService : ServiceBase
{
public TestService()
{
InitializeComponent();
}

protected override void OnStart(string[] args)
{
// TODO: Add code here to start your service.
}

protected override void OnStop()
{
// TODO: Add code here to perform any tear-down necessary to stop your service.
}

static void Main(string[] args)
{
TestService service = new TestService();
#if (!DEBUG)
ServiceBase.Run(service);
#else
service.OnStart(args);
Console.WriteLine("Debugging session was started. OnStop and other windows service specific methods will not be called.");
Thread.Sleep(Timeout.Infinite);
#endif
}
}
}

2 comments:

  1. Спасибо за статью.
    Очень полезно!

    ReplyDelete
  2. Большое спасибо! Очень помогло!!! =)
    Намного удобнее других способов и так просто!

    ReplyDelete