Adjuntar al servicio debe funcionar, así que no estoy seguro de por qué no puede. En lugar de eso, inserte la siguiente línea en el punto de entrada de la aplicación para su servicio de Windows (o el método OnStart()), compile en modo de depuración e inicie el servicio.
System.Diagnostics.Debugger.Break();
Al iniciar el servicio, se le pedirá que depure el proceso. Seleccione el depurador de Visual Studio 2008 y el proceso se cargará y se detendrá en su punto de interrupción programático. Presione F5 para comenzar a correr nuevamente.
EDIT:
Digamos que usted ha construido el servicio (modo de modo de disparo o de depuración - no importa) y se utiliza installutil para instalar el servicio, pero no han comenzado todavía. Siempre que el servicio sea no en ejecución, puede seguir realizando cambios de código y volver a compilar. Cuando comienza el servicio, su servicio reflejará los cambios de código más recientes. Si el servicio está en ejecución, no podrá compilar completamente el servicio porque los exe/dll (s) están en uso y no pueden ser reemplazados. Obviamente, simplemente detenga el servicio, vuelva a compilar y luego reinicie el servicio. El punto es este: No tiene que desinstalar el servicio para modificar el código. Basta con detenerlo, cambiar el código, volver a compilar y reiniciar.
En cuanto a la depuración en el modo de depuración frente a versión, no sé si es por eso que no puede adjuntar al proceso.Sé que es posible depurar las versiones de lanzamiento, pero no recomendaría esto simplemente porque si las optimizaciones están activadas, puede encontrar problemas al atravesar el código. Solo hemos utilizado la depuración en modo de lanzamiento como último recurso.
De forma predeterminada, cuando crea una aplicación de Visual Studio en modo de depuración, se coloca en un subdirectorio bin \ Debug de su proyecto. Cuando construye en modo de lanzamiento, el ejecutable se coloca en un subdirectorio bin \ Release. Cuando utiliza installutil para instalar su servicio, lo único que importa es dónde reside el servicio. En su caso, le sugiero que desinstale la versión en modo de lanzamiento de su servicio (installutil /u c:\myapp\myapp\bin\release\myapp.exe
), colocando el punto de corte programático, construyendo la versión de depuración y luego usando installutil para instalar la versión de depuración (del directorio bin \ Debug) .
Lo siento, esto fue largo. Espero que eso esté claro.
He actualizado mi respuesta basada en su pregunta. –