Question

J'ai créé un service Windows en C # (4.0) et j'essaie de l'installer à l'aide de l'outil InstallUtil dans la ligne de commande. Cependant, j'obtiens une exception. J'ai réussi à savoir quelle partie de mon code provoque l'exception - en utilisant une journalisation merdique mais peu importe - mais maintenant je veux comprendre pourquoi. Donc, ce que je veux faire, c'est déboguer l'installation de mon service Windows.

Je sais comment déboguer le service lui-même, mais ici, je veux déboguer le contenu de mon Installer.Install(IDictionary stateSaver) Méthode dans le service.

J'ai essayé d'attacher le débogueur au processus cmd.exe mais cela ne fonctionne évidemment pas. Je pensais également attacher le débogueur au processus d'installation, mais je n'ai aucune idée de la façon de le faire.

J'ai jeté un coup d'œil à ce post: Comment déboguer un service Windows qui est installé? Et plusieurs autres, mais dans ce cas, pour une raison quelconque, ce gars semble avoir son service déjà dans les services.msc qui n'est pas mon cas.

Comment puis-je atteindre cet objectif?

Était-ce utile?

La solution

Vous pouvez mettre un Debugger.Break(); Instruction dans le code d'installation, et il devrait lancer le débogueur pour vous.

Autres conseils

Si ce qui précède ne fonctionne pas, j'ai constaté que ce processus fonctionne également. Fondamentalement, vous compilez en mode débogage et installez le service (j'ai utilisé installUtil.exe via la ligne de commande). Dans le code, vous avez fait ressortir une zone de message avec l'ID de processus. StartUp Une deuxième instance de studio, attachez-la à ce processus et débogue. La boîte de message le fait une pause pour permettre la configuration. L'ID de processus n'est pas important, son nom instantutil.exe. Je mets habituellement un debug.break () après la zone de message pour garantir qu'il entre dans le code.

using System.Windows.Forms;
using System.Diagnostics;

...

#if DEBUG 
int processId = Process.GetCurrentProcess().Id;
string message = string.Format("Please attach the debugger (elevated on Vista or Win 7) to process [{0}].", processId);
MessageBox.Show(message, "Debug");
#endif

....

Comment déboguer l'installation d'un service Windows personnalisé

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top