visual studio otro hijo hacer formularios formulario ejemplos dentro como agregar abrir c# .net visual-studio debugging visual-studio-debugging

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 .


Puede adjuntar automáticamente a un proceso presionando F5, si configura algo así en Visual Studio:

aviso: Hay un "Comando" rellenado como un nombre ejecutable, y "Adjuntar" debe ser "sí"


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