private void AttachToProcess(string processName) { var dte = Package.GetDTE(); Processes processes = dte.Debugger.LocalProcesses; var process = processes.Cast <EnvDTE.Process>().Where(proc => proc.Name.Contains(processName)); if (!process.Any()) { return; } process.First().Attach(); }
/// <summary> /// Attaches a visual studio to this process /// </summary> public void AttachToVisualStudio() { Console.WriteLine("Attempting to attach to debugger"); //// Reference Visual Studio core var dte = GetDTE2(); if (dte == null) { return; } // Try loop - Visual Studio may not respond the first time. Debug.WriteLine("Debug test"); int tryCount = 5; while (tryCount-- > 0) { try { Processes processes = dte.Debugger.LocalProcesses; foreach (EnvDTE.Process proc in processes.Cast <EnvDTE.Process>()) { //Console.WriteLine(proc.Name); if (!proc.Name.Contains("NewModules")) { continue; } if (dte.Debugger.CurrentMode == dbgDebugMode.dbgDesignMode) { proc.Attach(); } Console.WriteLine(String.Format ("Attached to process {0} successfully.", proc.Name)); tryCount = 0; break; } break; } catch (COMException e) { Console.WriteLine(e.ToString()); System.Threading.Thread.Sleep(1000); } } }