When writing plugins for media center your plugin is hosted in ehexthost.exe this exe gets launched from ehshell.exe and you have no way of launching it directly, instead you pass a special param to ehshell.exe which will launch the plugin in a separate process.
When we are debugging media browser I find the process of attaching to a second process kind of clunky, I know about Debugger.Attach and also of some special registry entries I can use.
Both these methods don’t exactly fit my bill. What I want is to press F5 and have my current instance of visual studio attach to the child process automatically. Can this be done?
If there is a plugin for VS that allows me to achieve this functionality I would be happy with it.
EDIT
I ended up going with the following 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
Also, I outlined the process on how to get this going on my blog.
I would use a macro. I’ve redefined my F5 function to attach to the asp.net process instead of the long build/validate it usually performs. This works pretty well for me and it’s really easy.