当编写媒体中心插件时,你的插件托管在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
此外,我在我的博客上概述了如何启动此过程。