У меня есть следующий класс, который я использую для записи на выходе.
Код: Выделить всё
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Shell.Interop;
using System;
namespace MyExtension;
public class OutputWindow
{
private Guid OutputWindowGuid = new("1a9b495d-6b1a-4076-b244-98d0a5663053");
private readonly IVsOutputWindowPane outputPane;
public OutputWindow()
{
ThreadHelper.ThrowIfNotOnUIThread();
if (ServiceProvider.GlobalProvider.GetService(typeof(SVsOutputWindow))
is IVsOutputWindow obj)
{
obj.CreatePane(ref OutputWindowGuid, "MyTestPanel", 1, 0);
obj.GetPane(ref OutputWindowGuid, out outputPane);
}
}
internal void WriteLine(in string v)
{
ThreadHelper.ThrowIfNotOnUIThread();
outputPane.OutputStringThreadSafe(v + "\n");
}
}
Код: Выделить всё
protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress progress)
{
await this.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);
await LogAsync("TEST LOG");
}
internal async Task LogAsync(string v)
{
await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
OutputWindow.WriteLine(v);
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... on-startup