public void HandleAttachTo(string target) { if (target == OpenDialogTarget) { _logger.WriteLine("Opening 'Attach to Process' dialog…"); _dte.ExecuteCommand("Tools.AttachtoProcess"); return; } AttachTo(target); }
public Task WaitForAsync(string name, CancellationToken cancellationToken) { _logger.WriteLine("Attempting {0} wait.", IsEfficient ? "efficient" : "inefficient"); var taskSource = new TaskCompletionSource <object>(); var query = IsEfficient ? new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace WHERE ProcessName = '" + name + "'") : new EventQuery("SELECT TargetInstance FROM __InstanceCreationEvent WITHIN 0.5 WHERE TargetInstance ISA 'Win32_Process' AND TargetInstance.Name LIKE '" + name + "'"); ManagementEventWatcher watcher = null; try { watcher = new ManagementEventWatcher(query); cancellationToken.Register(() => { _logger.WriteLine("Received Cancel while waiting for '{0}'.", name); watcher.Stop(); watcher.Dispose(); taskSource.TrySetCanceled(); }); watcher.EventArrived += (sender, e) => { _logger.WriteLine("Received process start event for '{0}'.", name); watcher.Stop(); watcher.Dispose(); taskSource.TrySetResult(null); }; try { watcher.Start(); } catch (ManagementException) { if (!IsEfficient) { throw; } watcher.Dispose(); IsEfficient = false; return(WaitForAsync(name, cancellationToken)); } } catch (Exception) { if (watcher != null) { watcher.Dispose(); } throw; } return(taskSource.Task); }
private void SolutionEvents_Opened() { var solution = _dte.Solution; var solutionName = solution.GetName(); _logger.WriteLine("Solution '{0}' opened.", solutionName); if (string.IsNullOrEmpty(solutionName)) { // https://github.com/ashmind/SolutionIcon/issues/4 // I can't reproduce this for now, so jsut skipping. // However in the future I should improve it to work // with new "Open Folder". _logger.WriteLine("Solution name is empty, ignoring."); return; } try { using (var icon = GetIcon(solution)) { TaskbarManager.Instance.SetOverlayIcon(icon, ""); } } catch (Exception ex) { _logger.WriteLine(ex.ToString()); } }
private uint ConvertToUIContextCookie(Guid guid) { uint cookie; var hr = _monitorSelection.GetCmdUIContextCookie(ref guid, out cookie); if (hr != VSConstants.S_OK) { Marshal.ThrowExceptionForHR(hr); } _logger.WriteLine("Mapped UI context {0} to cookie {1}.", guid, cookie); return(cookie); }
public SolutionIconManager(DTE dte, IconFinder iconFinder, IconConverter iconConverter, IconGenerator iconGenerator, IDiagnosticLogger logger) { _dte = dte; _iconFinder = iconFinder; _iconConverter = iconConverter; _iconGenerator = iconGenerator; _logger = logger; if (!TaskbarManager.IsPlatformSupported) { _logger.WriteLine("Overlay icons are not supported on this platform, exiting."); return; } _solutionEvents = _dte.Events.SolutionEvents; _solutionEvents.Opened += SolutionEvents_Opened; _solutionEvents.AfterClosing += SolutionEvents_AfterClosing; }
private void SolutionEvents_Opened() { var solution = _dte.Solution; _logger.WriteLine("Solution '{0}' opened.", solution.GetName()); try { using (var icon = GetIcon(solution)) { TaskbarManager.Instance.SetOverlayIcon(icon, ""); } } catch (Exception ex) { _logger.WriteLine(ex.ToString()); } }
private void ProcessSessionCreateOrDestoryEvent(string logSessionAs) { _logger.WriteLine("Event: Debug session {0}.", logSessionAs); DebugSessionChanged(this, EventArgs.Empty); }
private void EnsureManagedExceptionCache() { if (_exceptionCache != null) { return; } var guid = VSConstants.DebugEnginesGuids.ManagedOnly_guid; var root = GetDefaultExceptions(); var list = new List <EXCEPTION_INFO>(root.Where(e => e.guidType == guid)); var index = 0; while (index < list.Count) { var children = GetDefaultExceptions(list[index]); list.AddRange(children); index += 1; } _exceptionCache = list; _logger.WriteLine("Exception cache is built: {0} exceptions.", _exceptionCache.Count); ExceptionNamesChanged(this, EventArgs.Empty); }