メディアセンター用のプラグインを作成する場合、プラグインはehexthost.exe
でホストされ、このexeはehshell.exe
から起動され、直接起動する方法はありません。代わりに、ehshell.exe
に特別なパラメータを渡します。別のプロセスでプラグインを起動します。
デバッグ中 メディアブラウザ 2番目のプロセスにアタッチするプロセスが不格好であることがわかりました。Debugger.Attachといくつかの 特別なレジストリ エントリについて知っています。 。
これらの方法はどちらも私の法案に正確には適合しません。 F5キーを押して、現在のVisualStudioのインスタンスを子プロセスに自動的にアタッチする必要があります。これはできますか?
この機能を実現できる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
また、ブログで これを実行する 方法のプロセスの概要を説明しました。
マクロを使用します。 F5関数を再定義して、通常実行する長いビルド/検証ではなく、asp.netプロセスにアタッチしました。これは私にとってはかなりうまく機能し、本当に簡単です。
For Each process In DTE.Debugger.LocalProcesses
If (process.Name.IndexOf("aspnet_wp.exe") <> -1) Then
process.Attach()
Exit Sub
End If
Next
VS2012の場合、マクロは削除されましたが、標準のキーボードショートカットを使用すると非常にすばやく実行できます。たとえば、iisexpress.exeにアタッチするには:
Ctrl + Alt + p -[プロセスにアタッチ]ダイアログを表示します
i -リスト内のiで始まる最初のプロセスにジャンプします(私にとってこれはiisexpress.exeです)
Enter -添付
超高速の場合は、 IISのデバッグ時にVisual Studio Attachセキュリティ警告をオフにする もできます。
Lazy という名前の私が書いたVisualStudioプラグインをチェックしてください。
起動時に例外をスローすることでクラッシュする、外部で生成されたプロセスでC++プラグインをデバッグしていましたが、これは完全に機能しました。
無料の Visual Studio用の拡張機能の再接続 を追加します。起動する前に、プロセス名に再度アタッチするように依頼してください。プロセス名の起動を待機していることを示すモーダルダイアログが表示されます。
ここでプロセスを起動すると、Visual Studioデバッガーがすぐにアタッチされ、例外をキャッチしてブレークポイントに到達します。
(これもメディアプラグインにありました。例外は通常、Delphiコンテキストのホストプロセスによってキャッチされて再スローされたため、それが発生する前に中断する必要がありました)。
Visual Studioでそのようなものをセットアップした場合、F5キーを押すと、プロセスに自動的にアタッチできます。
http://vvcap.net/db/ujYL7zeN_n_RgeprqCSM.htp
注意:実行可能ファイル名として「コマンド」が入力されており、「添付」は「はい」である必要があります