Для отладки службы в Visual Studio Я использую этот код в проекте Service:
В Program.cs:
static class Program
{
#if DEBUG
static AutoResetEvent sare = new AutoResetEvent(false);
#endif
static void Main()
{
#if (!DEBUG)
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] { new Service() };
ServiceBase.Run(ServicesToRun);
#else
Service service = new Service();
service.DebugServiceStopped += new Action(SetAutoResetEvent);
service.DebugStart();
sare.WaitOne();
#endif
}
#if DEBUG
private static void SetAutoResetEvent()
{
sare.Set();
}
#endif
}
В Service.CS (файл фактического Service
класса), необходимо добавить эти части кода:
#if DEBUG
public event Action DebugServiceStopped;
public void DebugStart()
{
OnStart(null);
}
#endif
protected override void OnStop()
{
#if DEBUG
DebugServiceStopped();
#endif
}
При выборе Debug
в конфигурации в Visual Studio вы сможете отладить Услугу так же, как обычное приложение, в противном случае проект будет скомпилирован как настоящая Служба.
Logging: В Windows есть Windows, журнал события, который используется для хранения информации, предупреждения и ошибки приложений. От службы в журнале событий может быть записано в с:
EventLog.WriteEntry("your log message", EventLogEntryType.Information); // or EventLogEntryType.Error,... depending on the entry type
Я обычно использую некоторые АОП инструмент, как PostSharp для вставки 'Trace.WriteLine' звонки (вы можете сделать это сами тоже). Когда мне нужно устранить неполадки, я настраиваю [Trace Listener] (http://msdn.microsoft.com/en-us/library/4y5y10s7 (v = vs.110) .aspx). – vcsjones