studio - formularios en c# ejemplos
Adjuntar a un proceso secundario automáticamente en Visual Studio durante la depuración (5)
Estaba depurando un complemento C ++ en un proceso generado externamente que colapsó lanzando una excepción al inicio y esto funcionó perfectamente para mí:
Agregue la extensión de reconexión gratuita para Visual Studio . Pídale que se vuelva a conectar al nombre del proceso antes de que se lance. Aparecerá un cuadro de diálogo modal que dice que está esperando que se inicie el nombre del proceso.
Ahora inicie el proceso y el depurador de Visual Studio se conectará de inmediato, atrapando excepciones y alcanzando puntos de interrupción.
(Esto también estaba en un complemento de medios, la excepción normalmente se detectaba y volvía a crear por el proceso de host en un contexto Delphi, así que necesitaba romper antes de que eso ocurriera).
Al escribir complementos para Media Center, su complemento está alojado en ehexthost.exe
Este exe se inicia desde ehshell.exe
y no tiene forma de ehshell.exe
directamente; en su lugar, se le pasa un ehshell.exe
especial a ehshell.exe
que abrirá el complemento de forma independiente. proceso.
Cuando estamos depurando el navegador de medios , encuentro que el proceso de adjuntarlo a un segundo proceso es algo torpe, conozco Debugger.Attach y también algunas entradas especiales de registro que puedo usar.
Ambos métodos no se ajustan exactamente a mi factura. Lo que quiero es presionar F5 y hacer que mi instancia actual de Visual Studio se una al proceso secundario automáticamente. Se puede hacer esto?
Si hay un complemento para VS que me permita lograr esta funcionalidad, estaría contento con él.
EDITAR
Terminé yendo con la siguiente macro:
Public Sub CompileRunAndAttachToEhExtHost()
DTE.Solution.SolutionBuild.Build(True)
DTE.Solution.SolutionBuild.Debug()
Dim trd As System.Threading.Thread = New System.Threading.Thread(AddressOf AttachToEhExtHost)
trd.Start()
End Sub
Public Sub AttachToEhExtHost()
Dim i As Integer = 0
Do Until i = 50
i = i + 1
Try
For Each proc As EnvDTE.Process In DTE.Debugger.LocalProcesses
If (proc.Name.IndexOf("ehexthost.exe") <> -1) Then
proc.Attach()
Exit Sub
End If
Next
Catch e As Exception
'' dont care - stuff may be busy
End Try
Threading.Thread.Sleep(100)
Loop
End Sub
Además, esbocé el proceso sobre cómo hacer que esto funcione en mi blog.
Mira el plugin de VisualStudio que escribí, llamado Lazy .
Para VS2012, se han eliminado las macros, pero aún puede hacerlo bastante rápido con atajos de teclado estándar. Por ejemplo, para adjuntar a iisexpress.exe:
Ctrl + Alt + p - muestra el diálogo Adjuntar al proceso
i - salta al primer proceso que comienza con i en la lista (para mí esto es iisexpress.exe)
Entrar - adjunta
Para la velocidad súper, también puede Desactivar la advertencia de seguridad de Visual Studio Attach al depurar IIS .
Yo usaría un macro. He redefinido mi función F5 para adjuntarla al proceso asp.net en lugar de la compilación / validación larga que normalmente realiza. Esto funciona bastante bien para mí y es realmente fácil.
For Each process In DTE.Debugger.LocalProcesses
If (process.Name.IndexOf("aspnet_wp.exe") <> -1) Then
process.Attach()
Exit Sub
End If
Next