Quando si scrivono plug-in per media center, il proprio plug-in è ospitato in e non è possibile avviarlo direttamente, ma si passa un parametro speciale a ehshell.exe
. che avvierà il plugin in un processo separato.Allegare a un processo figlio automaticamente in Visual Studio durante il debug
Quando si esegue il debug di media browser, trovo il processo di collegamento a un secondo processo di tipo goffa, so di Debugger.Attach e anche di alcune voci di special registry che posso utilizzare.
Entrambi questi metodi non corrispondono esattamente al mio conto. Quello che voglio è premere F5 e fare in modo che la mia attuale istanza di Visual Studio si colleghi automaticamente al processo figlio. Può essere fatto?
Se esiste un plug-in per VS che mi consente di ottenere questa funzionalità, ne sarei felice.
EDIT
ho finito per andare con la seguente macro:
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
Inoltre, ho delineato il processo su come get this going sul mio blog.
c'è un altro modo con la nuova interfaccia di Debugger2, http://www.codeplex.com/lazy/SourceControl/changeset/view/20095#307770 –
C'è un vantaggio nell'utilizzo dell'interfaccia di Debugger2? –
sì, invece di loop su DTE.Debugger.LocalProcesses si può solo ottenere il proc processo = debugger2.GetProcesses (trans, "") .Item (processName) –