// Make this DTE attach to the newly created process public void AttachToProcess(int processId) { context.Execute(() => { MessageFilter.Register(); var processes = dte.Debugger.LocalProcesses.OfType <EnvDTE.Process>(); var process = processes.FirstOrDefault(x => x.ProcessID == processId); process?.Attach(); MessageFilter.Revoke(); }); }
private static VisualStudioDTE.Instance GetFirstOrDefaultDTE(STAContext context, Func <VisualStudioDTE.Instance, bool> predicate) { return(context.Execute(() => { // Locate all Visual Studio DTE var dtes = VisualStudioDTE.GetActiveDTEs().ToArray(); // Find DTE MessageFilter.Register(); var result = dtes.FirstOrDefault(predicate); MessageFilter.Revoke(); return result; })); }