public IOutputWindowPane TryGetPane(string name) { var olesp = (IOleServiceProvider)GlobalServiceProvider.GetService(typeof(IOleServiceProvider)); if (olesp == null) { return(null); } var outputWindow = olesp.TryGetGlobalService <SVsOutputWindow, IVsOutputWindow>(); if (outputWindow == null) { return(null); } Guid?guid = _outputWindows.GetOrAdd(name, CreateWindowPaneOnMainThread); if (!guid.HasValue) { return(null); } Guid guidValue = guid.Value; IVsOutputWindowPane vspane = null; if (ErrorHandler.Failed(ErrorHandler.CallWithCOMConvention(() => outputWindow.GetPane(ref guidValue, out vspane)))) { return(null); } IOutputWindowPane pane = new VsOutputWindowPaneAdapter(vspane); return(pane); }
public IOutputWindowPane TryGetPane(string name) { if (name == null) { throw new ArgumentNullException(nameof(name)); } if (string.IsNullOrEmpty(name)) { throw new ArgumentException($"{nameof(name)} cannot be empty", nameof(name)); } if (PredefinedOutputWindowPanes.General.Equals(name)) { IVsOutputWindowPane generalPane = GlobalServiceProvider.GetService <SVsGeneralOutputWindowPane, IVsOutputWindowPane>(); if (generalPane != null) { return(new VsOutputWindowPaneAdapter(generalPane)); } } var outputWindow = GlobalServiceProvider.GetOutputWindow(); if (outputWindow == null) { return(null); } Guid?guid = _outputWindows.GetOrAdd(name, CreateWindowPaneOnMainThread); if (!guid.HasValue) { return(null); } Guid guidValue = guid.Value; IVsOutputWindowPane vspane = null; if (ErrorHandler.Failed(ErrorHandler.CallWithCOMConvention(() => outputWindow.GetPane(ref guidValue, out vspane)))) { return(null); } IOutputWindowPane pane = new VsOutputWindowPaneAdapter(vspane); return(pane); }
public static void Writeline(this Microsoft.VisualStudio.Shell.Interop.IVsOutputWindowPane pane, string message, params object[] args) { #pragma warning disable VSTHRD010 // Invoke single-threaded types on Main thread pane?.OutputStringThreadSafe(string.Format(string.Concat(message, '\n'), args)); #pragma warning restore VSTHRD010 // Invoke single-threaded types on Main thread }