Um colega de trabalho me questionou como debugar um Windows Services, geralmente isso é uma tarefa chata, precisamos instalar o serviço e ativar a interação para depois iniciar o Visual Studio em modo debug atachando o processo do serviço instalado.
Veja bem, não precisa ser complicado assim. Basta definir no próprio código o comportamento. Acredito que isso veja a ajudar bastante o nosso dia-a-dia então ai vai:
No seu arquivo Program.cs em seu estado original encontraremos o código a seguir:
namespace ServicoEduardo { static class Program { /// <summary> /// The main entry point for the application. /// </summary> static void Main() { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new Service1() }; ServiceBase.Run(ServicesToRun); } } }
No código a seguir estamos deixando o serviço apto a ser debugado pelo Visual Studio sem a necessidade de instalação ou demais configurações:
namespace ServicoEduardo { static class Program { /// <summary> /// The main entry point for the application. /// </summary> static void Main() { #if (!DEBUG) ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new Service1() }; ServiceBase.Run(ServicesToRun); #else // Debug code: Permite debugar um código sem se passar por um Windows Service. // Defina qual método deseja chamar no inicio do Debug (ex. MetodoRealizaFuncao) // Depois de debugar basta compilar em Release e instalar para funcionar normalmente. Service1 service = new Service1(); // Chamada do seu método para Debug. service.MetodoRealizaFuncao(); // Coloque sempre um breakpoint para o ponto de parada do seu código. System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite); #endif } } }
O que fizemos? Simples, informamos no próprio código o seu devido comportamento, assim quando estiver em modo Debug no Visual Studio ao dar um F5 seu código iniciará na chamada do método que foi definida.
Para testarmos as rotinas é muito prático, pois evitamos a necessidade de instalar e atachar o processo do serviço, que na maioria das vezes se torna o grande problema para testarmos as funcionalidades desenvolvidas.
Espero ter ajudado, em caso de dúvidas deixe um comentário.
Olá, estava pesquisando no google e encontrei seu site!! Parabéns! me ajudou..kkkkkkkkkkkkkkkkk!
Você sabe explicar… pode fazer um tutorial de algum sistema basico consumindo algum webservice? abraços
Olá Anderson, agradeço o feedback!
Boa! Pode ser tema de um próximo post.
Abraços!
Olá boa tarde!
Sou iniciante e estou com certa dificuldade para criar um serviço que acesse dois bancos que verifique se tem alguma atualização em ambos, porem criei o serviço que esta rodando mais não estou conseguindo ligar os banco de dados com Windows Services como proceder para fazer a ligação de ambos? Alem disso ele deve atualizar linha por linha de cada tabela e cada banco tem muitas tabelas eu deveria conectar campo por campo de cada tabela como fazemos normalmente ou há outra forma?Preciso de uma ajuda…..
Sera que poderia me auxiliar?
Obrigado…..
Exatamente o que eu estava procurando. Valeu cara!
Obrigado pelo feedback Jhonny!
Abraço!
Obrigado meu ajudou bastante!
Valeu!
Abs!
Valeu cara!!! Me economizou uma licença do Visual Studio! 😀 Abraço!
Opa! Bacana!
Abraços!
Achei outras soluções envolvendo criar um projeto secundário (Console Application) para instanciar o serviço e, finalmente, debugá-lo. Da forma que você sugeriu fica bem mais simples! Obrigado!
É para poupar tempo mesmo 🙂
Valeu Abs!!!
Não deu certo..
Para eu te ajudar precisaria conhecer o problema Haroldo.
Excelente o post, você está de parabéns pela dica funcionou perfeitamente aqui, obrigado
Obrigado pelo feedback Alex
Abs!
Vlw isso me ajudou muito…
Fala Henrique!
Muito obrigado pelo feedback!
Abs!
Excelente dica. Parabéns e obrigado.
Eduardo, sua informação ajudou muito!
Agradeço a publicação!
Estou iniciando em desenv. de serviços e a falta de fácil Debug já estava me fazendo desisitir.
Valeu mesmo.
Parabéns mascote! Muito bom!
Simples, objetivo e muito, mas muiiiito útil mesmo.
um grande abraço e sucesso amigão!
Valeu, meu caro. Solução muito útil. Adiantou demais a minha vida!
Abraço!
Muito bom o conteúdo.
Era isso que precisava.
Estava debugando de uma forma mais trabalhosa usando o Debugger.Launch();.
Eduardo, Obrigado pela dica
ficou muito bom…meus parabéns.
Valeu, Funcionou certinho.
Maravilhoso!!!
Perfeito, ajudou muito.
Obrigado.
Eduardo, parabéns cara.
Ótimas dicas…como sempre.
Me ajudou muito.
Obrigado.
Muito bom !
Sensacional cara, eu tinha outros métodos para debugar serviço que eram muito custoso e demorado, salvou a vida seu post !! Abraço !!