Domanda

Quando scrivi plugin per media center il tuo plugin è ospitato in ehexthost.exe questo exe viene lanciato da ehshell.exe e non hai modo di avviarlo direttamente, invece passi un parametro speciale a ehshell.exe che avvierà il plugin in un processo separato.

Quando eseguiamo il debug browser multimediale trovo il processo di collegamento a un secondo tipo di processo goffo, conosco Debugger.Attach e anche alcuni registro speciale voci che posso usare.

Entrambi questi metodi non corrispondono esattamente al mio conto. Quello che voglio è premere F5 e fare in modo che la mia attuale istanza di Visual Studio si colleghi automaticamente al processo figlio. Può essere fatto?

Se c'è un plugin per VS che mi permette di raggiungere questa funzionalità, ne sarei felice.

Modifica

Ho finito con la seguente 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

Inoltre, ho delineato il processo su come vai avanti sul mio blog.

È stato utile?

Soluzione

Vorrei usare una macro. Ho ridefinito la mia funzione F5 per collegarmi al processo asp.net invece del lungo build / validare che di solito esegue. Questo funziona abbastanza bene per me ed è davvero facile.

    For Each process In DTE.Debugger.LocalProcesses
        If (process.Name.IndexOf("aspnet_wp.exe") <> -1) Then
            process.Attach()
            Exit Sub
        End If
    Next

Altri suggerimenti

Per VS2012, le macro sono state eliminate, ma puoi comunque farlo abbastanza rapidamente con le scorciatoie da tastiera standard. Ad esempio, per collegarsi a iisexpress.exe:

Ctrl + Alt + p : visualizza la finestra di dialogo Allega al processo

i - passa al primo processo che inizia con i nell'elenco (per me questo è iisexpress.exe)

Inserisci - allega

Per la super velocità, puoi anche Disattivare Visual Studio Allegare un avviso di sicurezza durante il debug di IIS .

Guarda il plug-in VisualStudio che ho scritto, chiamato Lazy .

Stavo eseguendo il debug di un plug-in C ++ in un processo generato esternamente che si è bloccato causando un'eccezione all'avvio e questo ha funzionato perfettamente per me:

Aggiungi gratuitamente Riattiva l'estensione per Visual Studio . Chiedere di ricollegarlo al nome del processo prima che venga avviato. Apparirà una finestra di dialogo modale che dice che sta aspettando l'avvio del nome del processo.

Ora avvia il processo e il debugger di Visual Studio si collegherà immediatamente, rilevando eccezioni e colpendo i punti di interruzione.

(Questo era anche in un plug-in multimediale, l'eccezione veniva normalmente catturata e riproposta dal processo host in un contesto Delphi, quindi dovevo interrompere prima che ciò accadesse).

È possibile collegarsi automaticamente a un processo premendo F5, se si imposta qualcosa di simile in Visual Studio:

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

avviso: c'è " Comando " compilato come nome eseguibile e " Allega " deve essere " si "

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top