Pregunta

Al escribir complementos para el centro de medios, su complemento se aloja en ehexthost.exe , este exe se inicia desde ehshell.exe y no tiene forma de iniciarlo directamente, en su lugar pasa un parámetro especial a ehshell.exe que iniciará el complemento en un proceso separado.

Cuando estamos depurando navegador de medios encuentro el proceso de adjuntar a un segundo tipo de proceso torpe, sé sobre Debugger.Attach y también de algunos registro especial entradas 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 adjunte al proceso secundario automáticamente. Se puede hacer esto?

Si hay un plugin para VS que me permita lograr esta funcionalidad, me encantaría.

EDIT

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, describí el proceso sobre cómo poner esto en marcha en mi blog.

¿Fue útil?

Solución

Yo usaría una macro. He redefinido mi función F5 para adjuntarla al proceso asp.net en lugar de la compilación / validación larga que generalmente realiza. Esto funciona bastante bien para mí y es muy 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

Otros consejos

Para VS2012, las macros se han eliminado, pero aún puede hacerlo con bastante rapidez con los métodos abreviados de teclado estándar. Por ejemplo, para adjuntar a iisexpress.exe:

Ctrl + Alt + p : muestra el cuadro de diálogo Adjuntar al proceso

i : pasa al primer proceso que comienza con i en la lista (para mí, esto es iisexpress.exe)

Enter - adjunta

Para la velocidad máxima, también puede Desactivar Visual Studio adjunta una advertencia de seguridad al depurar IIS .

Vea el complemento de VisualStudio que escribí, llamado Lazy .

Estaba depurando un complemento de C ++ en un proceso generado externamente que se bloqueó al lanzar una excepción al inicio y esto funcionó perfectamente para mí:

Agregue la versión gratuita Reattach Extension para Visual Studio . Pídale que se vuelva a unir al nombre del proceso antes de que se inicie. 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 adjuntará inmediatamente, detectando excepciones y alcanzando puntos de interrupción.

(Esto también estaba en un complemento de medios, la excepción normalmente fue detectada y devuelta por el proceso del host en un contexto Delphi, así que tuve que interrumpir antes de que eso ocurriera).

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

http://vvcap.net/db/ujYL7zeN_n_RgeprqCSM.htp

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top