Pergunta

Ao escrever plugins para o centro de seu plugin está hospedado em ehexthost.exe este exe é lançado a partir ehshell.exe e você não tem nenhuma maneira de lançar-lo diretamente mídia, em vez de passar um parâmetro especial para ehshell.exe que irá lançar o plugin em um processo separado.

Quando estiver depurando acho que o processo de anexar a um segundo processo espécie de desajeitado, eu sei sobre Debugger.Attach e também de algumas registro especial entradas que eu possa usar.

Ambos os métodos não se encaixam exatamente a minha conta. O que eu quero é pressionar F5 e ter a minha instância atual do visual studio anexar ao processo filho automaticamente. isso pode ser feito?

Se houver um plug-in para VS que me permite atingir essa funcionalidade eu ficaria feliz com ele.

Editar

Eu acabei indo com a seguinte 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

Além disso, eu delineado o processo sobre a forma de obter este indo no meu blog.

Foi útil?

Solução

Gostaria de usar um macro. Eu já redefiniu a minha função F5 para anexar ao processo asp.net, em vez da longo build / validá-lo normalmente executa. Isso funciona muito bem para mim e é muito 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

Outras dicas

Para VS2012, macros foram retiradas, mas você ainda pode fazê-lo muito rapidamente com atalhos de teclado padrão. Por exemplo, para anexar a iisexpress.exe:

Ctrl + Alt + p - traz a anexar ao processo de diálogo

i - salta para o primeiro processo que começa com i na lista (para mim isso é iisexpress.exe)

Enter - adidos

Para super velocidade, você também pode Desligue Visual Studio Anexar aviso de segurança quando a depuração IIS .

Confira o VisualStudio plugin que eu escrevi, chamado preguiçoso .

Eu estava a depuração de um C ++ plugins em um processo gerado externamente que caiu lançando uma exceção na inicialização e isso funcionou perfeitamente para mim:

Adicionar a livre Reanexar Extension for Visual Studio . Pedi-lo a recolocar o nome do processo antes de ser lançado. Ele irá aparecer um diálogo modal dizendo que está aguardando o nome do processo para o lançamento.

Agora lançar o processo e o depurador Visual Studio irá anexar imediatamente, pegando exceções e bater pontos de interrupção.

(Esta foi também em uma mídia plugin, a exceção foi normalmente capturados e relançada pelo processo de host em um contexto Delphi assim que eu precisava para quebrar antes que isso acontecesse).

Você pode anexar automaticamente a um processo pressionando F5, se você configurar algo como isso no visual studio:

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

AVISO: Há "Command" cheio como um nome do executável, e "Anexar" deve ser "sim"

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top