为媒体中心编写插件时,您的插件托管在ehexthost.exe
此 exe 中ehshell.exe
,您无法直接启动它,而是传递一个特殊参数,ehshell.exe
该参数将在单独的进程中启动插件。
当我们调试媒体浏览器时,我发现附加到第二个进程的过程有点笨拙,我知道 Debugger.Attach 以及我可以使用的一些特殊注册表项。
这两种方法都不完全符合我的要求。我想要的是按 F5 并让我当前的 Visual Studio 实例自动附加到子进程。这可以做到吗?
如果 VS 有一个插件可以让我实现这个功能,我会很高兴的。
编辑
我最终使用了以下宏:
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
另外,我在我的博客 上概述了如何实现这一点的过程。