メディア センターのプラグインを作成する場合、プラグインはehexthost.exe
この exeでホストされehshell.exe
ており、直接起動する方法はありません。代わりehshell.exe
に、別のプロセスでプラグインを起動する特別なパラメーターを渡します。
メディア ブラウザをデバッグしているときに、2 番目のプロセスにアタッチするプロセスがややこしいことに気づきました。Debugger.Attach と、使用できるいくつかの特別なレジストリエントリについて知っています。
これらの方法は両方とも、私の法案に正確には適合しません。私が望むのは、F5 キーを押して、ビジュアル スタジオの現在のインスタンスを自動的に子プロセスにアタッチすることです。これはできますか?
この機能を実現できる 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
また、ブログで これを実現する方法についてのプロセスを概説しました。