Question

Lorsque vous écrivez des plugins pour Media Center, votre plugin est hébergé dans ehexthost.exe , cet exe est lancé à partir de ehshell.exe et vous n'avez aucun moyen de le lancer directement. vous passez un paramètre spécial à ehshell.exe qui lancera le plug-in dans un processus séparé.

Lors du débogage du navigateur multimédia , le processus de connexion à un Deuxième processus assez maladroit, je connais Debugger.Attach ainsi que certains registre spécial entrées que je peux utiliser.

Ces deux méthodes ne correspondent pas exactement à ma facture. Ce que je veux, c'est appuyer sur F5 et que mon instance actuelle de visual studio soit automatiquement associée au processus enfant. Cela peut-il être fait?

S'il existe un plug-in pour VS qui me permet de réaliser cette fonctionnalité, j'en serais ravi.

MODIFIER

J'ai fini par utiliser la macro suivante:

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

En outre, j’ai présenté le processus permettant de Obtenez ceci sur mon blog.

Était-ce utile?

La solution

Je voudrais utiliser une macro. J'ai redéfini ma fonction F5 pour l'attacher au processus asp.net au lieu de la construction / validation longue qu'il effectue habituellement. Cela fonctionne assez bien pour moi et c'est vraiment facile.

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

Autres conseils

Pour VS2012, les macros ont été supprimées, mais vous pouvez toujours le faire assez rapidement avec les raccourcis clavier standard. Par exemple, pour attacher à iisexpress.exe:

Ctrl + Alt + p - ouvre la boîte de dialogue Attacher au processus

i - passe au premier processus commençant par i dans la liste (pour moi, c'est iisexpress.exe)

Entrez - joint

Pour plus de rapidité, vous pouvez également désactiver Avertissement de sécurité relatif à Visual Studio Attach lors du débogage d’IIS .

Découvrez le plug-in VisualStudio que j'ai écrit, nommé Lazy .

Je déboguais un plugin C ++ dans un processus généré de manière externe, qui se bloquait en lançant une exception au démarrage, ce qui fonctionnait parfaitement pour moi:

Ajoutez gratuitement la Extension de Reattach pour Visual Studio . Demandez-lui de rattacher le nom du processus avant son lancement. Une boîte de dialogue modale s'ouvrira pour vous signaler qu'elle attend le lancement du nom du processus.

Lancez maintenant le processus et le débogueur Visual Studio s'attache immédiatement, interceptant les exceptions et les points d'arrêt.

(Il s’agissait également d’un plug-in multimédia, l’exception étant normalement interceptée et restituée par le processus hôte dans un contexte Delphi, je devais donc interrompre avant que cela ne se produise).

Vous pouvez vous attacher automatiquement à un processus en appuyant sur F5, si vous configurez quelque chose comme ça dans Visual Studio:

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

remarque: il y a " Commande " rempli en tant que nom d’exécutable, et " Attacher " doit être "oui"

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top