Как я могу записать на вкладку вывода при запуске расширения Visual Studio 2022? ⇐ C#

Место общения программистов C#
Anonymous
Как я могу записать на вкладку вывода при запуске расширения Visual Studio 2022?

Сообщение Anonymous »

Я создаю расширение для Visual Studio 2022. Когда расширение запускается (например, когда пользователь открывает Visual Studio), я хочу начать записывать некоторую информацию журнала в вывод на пользовательской вкладке «Выбрать вывод из». p>
У меня есть следующий класс, который я использую для записи на выходе.

Код: Выделить всё

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);
}
Однако при запуске ничего не пишет. Как мне заставить его писать? В этом отношении я не могу заставить какой-либо код выполняться при запуске. Я думал, что-нибудь в InitializeAsync будет запускаться при запуске?

Подробнее здесь: https://stackoverflow.com/questions/791 ... on-startup

Вернуться в «C#»