VSIX VS 22 не проходит InitializeAsync
Я новичок в разработке расширений под VS
Пытаюсь сделать запись в отдельный файл всех изменений в редакторе кода.
Нашёл ивент, отвечающий за изменение строки, но по консоли видно, что ничего не происходит и похоже ивент даже не был зарегестрирован.
После этого я решил добавить вывод текста в консоль в InitializeAsync и ивент - ничего, ничего не выводит.
Тогда я решил вывод в коносль заменить на вывод в файл, так же - ничего, файл пустой.
Пытался дебагать - "Нет загруженных символов для этого документа", не фиксится.
using EnvDTE;
using EnvDTE80;
using Microsoft.VisualStudio.Shell;
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading;
using Task = System.Threading.Tasks.Task;
namespace YoticVSIX
{
[PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)]
[Guid("68329381-c591-4ded-8130-96f2a0cf553c")]
public sealed class YoticVSIXPackage : AsyncPackage
{
DocumentEvents docE;
Document doc;
DTE dte;
public void Connect()
{
dte = (DTE)Package.GetGlobalService(typeof(DTE));
doc = dte.ActiveDocument;
docE = dte.Events.DocumentEvents;
dte.Events.TextEditorEvents.LineChanged += LineChanged;
}
public void LineChanged(TextPoint StartPoint, TextPoint EndPoint, int Hint)
{
File.WriteAllText("C:\\test.txt", $@"
StartPoint: Line: {StartPoint.Line}, CharOff: {StartPoint.LineCharOffset},
EndPoint: Line: {EndPoint.Line}, CharOff: {EndPoint.LineCharOffset},
Рандомная хуйня:{Hint}.
");
}
protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress<ServiceProgressData> progress)
{
File.WriteAllText("C:\\test.txt", "qqq");
Console.WriteLine("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");
Connect();
await this.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);
}
}
}
Ответы (1 шт):
Ответ кроется в том, что метод будет вызван только при ипользовании расширения, я сменил проект на VSIX Command Community и теперь при нажатии на мою команду расширение начинает работу. Не знаю что ещё может побудить его стартануть, буду рад увидеть комментарии или дополнение.
Я также нашёл метод dte.ExecuteCommand, возможно его как-нибудь возможно будет использовать