private void WriteLineCore(string text)
        {
            // Extremely naive implementation of a Windows Pane logger - the assumption here is that text is rarely written,
            // so transitions to the UI thread are uncommon and are fire and forget. If we start writing to this a lot (such
            // as via build), then we'll need to implement a better queueing mechanism.
            _threadingService.Fork(async() => {
                IVsOutputWindowPane pane = await _outputWindowProvider.GetOutputWindowPaneAsync()
                                           .ConfigureAwait(true);

                pane.OutputStringNoPump(text + Environment.NewLine);
            }, options: ForkOptions.HideLocks | ForkOptions.StartOnMainThread);
        }
        public void WriteLine(StringFormat format)
        {
            if (IsEnabled)
            {
                string text = format.Text + Environment.NewLine;

                // Extremely naive implementation of a Windows Pane logger - the assumption here is that text is rarely written,
                // so transitions to the UI thread are uncommon and are fire and forget. If we start writing to this a lot (such
                // as via build), then we'll need to implement a better queueing mechanism.
                _threadingService.Fork(async() =>
                {
                    IVsOutputWindowPane pane = await _outputWindowProvider.GetOutputWindowPaneAsync();

                    pane.OutputStringNoPump(text);
                }, options: ForkOptions.HideLocks | ForkOptions.StartOnMainThread,
                                       factory: _threadingService.JoinableTaskFactory);
            }
        }