2010-06-03 4 views

Répondre

1

Dans votre fonction principale, plutôt que d'appeler ServiceBase.Run(servicesToRun), exécutez simplement le code que vous voulez tester.

Je mets habituellement dans le code pour vérifier un paramètre de ligne de commande comme dans:

-c run in console mode 
-i install the service 
-u uninstall the service 
none run the service 

puis mis en place VS à envoyer tout -c en mode débogage.

+0

Ce genre de chose est précisément ce que TopShelf automatise pour vous :-) –

+0

Peut-être, mais c'est aussi 3 dlls supplémentaires sans aucune documentation facilement accessible et l'inquiétude habituelle au sujet des licences et à quel point c'est bien écrit. Si j'avais besoin de toutes les fonctionnalités supplémentaires, je suis sûr qu'il contient (même si je ne suis pas sûr de ce qu'ils sont, car la description est assez basique), je pourrais être intéressé. –

3

Vous écrivez le service en premier lieu? Si oui, faites-vous une faveur et utilisez TopShelf. Il vous permettra de créer une application de console simple que vous pouvez déboguer en tant qu'application de console, mais il peut également être enregistré en tant que service et être exécuté en tant que tel. Massivement pratique dans mon expérience car vous pouvez facilement déboguer le service si nécessaire sans modifier le code.

+0

+1 pour le lien. – dotnetdev

0

Voici un peu de code que vous pouvez utiliser pour attacher un débogueur. J'ai trouvé difficile de joindre un débogueur au début du processus dans le passé. Quand j'ai trouvé ce clip fantastique sur CodeProject, je crois.

Quoi qu'il en soit, ajoutez ceci à OnStart, créez, installez et démarrez votre service. Une fois que vous avez commencé, il semblera qu'il a été accroché. Fixer au processus de service (en vous assurant que vous avez la bonne Fixer à la base de code sélectionné et PRESTO vous pouvez même debug démarrer.

protected override void OnStart(string[] args) 
{ 
#if DEBUG 
    while (!Debugger.IsAttached)  // Waiting until debugger is attached 
    { 
     RequestAdditionalTime(1000); // Prevents the service from timeout 
     Thread.Sleep(1000);   // Gives you time to attach the debugger 
    } 
    RequestAdditionalTime(20000);  // for Debugging the OnStart method, 
             // increase as needed to prevent timeouts 
#endif 

    // here is your startup code with breakpoints 
} 

HTH

Questions connexes