Pages

Wednesday, May 28, 2014

Correr um serviço windows como uma aplicação de consola


Um dos problemas comuns quando se desenvolvem setrviços windows é conseguir fazer debug a eles... Ou fazemos um attach process e corremos o risco de apanhar o processo já a meio da sua execução ou então criar um projecto consola aparte só para este efeito.

Uma forma de facilmente usar o mesmo projecto para correr o serviço windows ou conseguir lançar como um projecto consola é usar uma flag de ambiente que nos indica se estamos a correr no contexto do visual studio ou não.

Para isso basta seguir este pequeno template e conseguimos correr o projecto com um F5 e fazer debug ao código ou então usar o InstallUtil e instalar o projecto como um serviço windows.

 public static int Main(string[] args)  
 {  
  if (!Environment.UserInteractive)  
  {  
   // Startup as service.  
  }  
  else  
  {  
   // Startup as application  
  }  
 }  


Fonte: Easier way to start debugging a windows service in C#