При написании плагинов для медиацентра ваш плагин размещается в ehexthost.exe
, этот exe запускается с ehshell.exe
, и вы не можете запустить его напрямую, вместо этого вы передаете специальный параметр в ehshell.exe
, который запустит плагин в отдельном процессе.
Когда мы отлаживаем медиа-браузер Я нахожу процесс присоединения ко второму типу процесса не совсем понятным, я знаю о Debugger.Attach, а также о некоторых специальных записях реестра , которые я могу использовать.
Оба эти метода не совсем соответствуют моим требованиям. Я хочу нажать F5 и автоматически привязать текущий экземпляр Visual Studio к дочернему процессу. Можно ли это сделать?
Если есть плагин для VS, который позволяет мне достичь этой функциональности, я был бы счастлив с ним.
EDIT
В итоге я выбрал следующий макрос:
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
Кроме того, я обрисовал процесс того, как сделать это в моем блоге.